无法在Visual Studio 2012中加载文件或程序集,C#

我正在Windows 7上的Visual Studio 2012上编写C#代码。我的解决方案包含多个项目。

我最近在我的解决方案中添加了一个新项目,并在解决方案中的其他两个项目的参考中添加了这个新项目的dll(其中一个是启动项目)。 新项目本身引用了我的解决方案中未包含的其他几个项目。

在解决方案中构建项目工作正常,但是当我尝试运行程序时(在Debug或Release中)我收到错误。 这是错误:

System.IO.FileNotFoundException was caught HResult=-2147024894 Message=Could not load file or assembly 'ABCD, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified. Source=NP FileName=ABCD, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null FusionLog==== Pre-bind state information === LOG: User = MyCompany\MyName LOG: DisplayName = ABCD, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (Fully-specified) LOG: Appbase = file:///C:/Users/MyName/Documents/Visual Studio 2012/Projects/MyProgram/Analysis/bin/Debug/ LOG: Initial PrivatePath = NULL Calling assembly : NP, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. === LOG: This bind starts in default load context. LOG: Using application configuration file: C:\Users\MyName\Documents\Visual Studio 2012\Projects\MyProgram\Analysis\bin\Debug\Analysis.vshost.exe.Config LOG: Using host configuration file: LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). LOG: Attempting download of new URL file:///C:/Users/MyName/Documents/Visual Studio 2012/Projects/MyProgram/Analysis/bin/Debug/ABCD.DLL. LOG: Attempting download of new URL file:///C:/Users/MyName/Documents/Visual Studio 2012/Projects/MyProgram/Analysis/bin/Debug/ABCD/ABCD.DLL. LOG: Attempting download of new URL file:///C:/Users/MyName/Documents/Visual Studio 2012/Projects/MyProgram/Analysis/bin/Debug/ABCD.EXE. LOG: Attempting download of new URL file:///C:/Users/MyName/Documents/Visual Studio 2012/Projects/MyProgram/Analysis/bin/Debug/ABCD/ABCD.EXE. StackTrace: at NewProject.DATA.SetType(NP np, String code, OrderType orderT, MODEL MODELv) at NewProject.DATA.SetData(NP np, String no, String type, String law, String time, OrderType orderT, MODEL MODELv) InnerException: 

分析是我的启动项目。 NewProject是我最近添加到我的解决方案的项目。 在NewProject中引用了ABCD.dll,但项目ABCD不是解决方案本身的一部分。

在这个错误中,据说AppBase是file:/// C:/ Users / MyName / Documents / Visual Studio 2012 / Projects / MyProgram / Analysis / bin / Debug /

但是,当我在NewProject中查看ABCD参考时,它说:

 Assembly ABCD C:\Users\MyName\Documents\Visual Studio 2012\Projects\np\bin\ABCD.dll 

的确,ABCD.dll在AppBase地址中没有写入错误。 但我从来没有说它在那里,我不明白这是从哪里来的。

我试图把ABCD.dll放在错误给我的AppBase地址中。 但每次我重建NewProject和(然后)我的启动项目Analysis时,ABCD.dll都会从C:/ Users / MyName / Documents / Visual Studio 2012 / Projects / MyProgram / Analysis / bin / Debug /中消失

我是Visual Studio的新手。 在添加新项目时我可能做错了但我无法理解它是什么。 如果你们其中一个人对解决这个问题的方法有所了解,请不要犹豫!

如果需要项目之间的引用,则添加“项目引用”而不是引用DLL文件。 如果您确实需要引用DLL文件,那么:

1)在项目中创建“库”(或其他)文件夹。

2)将引用的DLL复制到此文件夹中。

3)在VS中,使用“添加现有项”将DLL文件添加到项目中。 在文件选择对话框中,您需要将文件filter更改为*.*以显示DLL。

4)在此DLL节点的属性下,在Build选项中选择“Copy if newer”。

5)在“Libraries”目录中添加对DLL文件的引用。

项目之间的引用当然更好,因为在重建它们时,引用会自动更新。 否则,每次要更新引用时,都需要用新文件替换DLL文件。