Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何知道先加载哪个项目_C#_Compiler Construction - Fatal编程技术网

C# 如何知道先加载哪个项目

C# 如何知道先加载哪个项目,c#,compiler-construction,C#,Compiler Construction,当我在解决方案中包括一些项目并将引用更改为项目引用时,有时它仍然加载错误的程序集,因为有其他东西首先调用它,而我的解决方案中不包括该程序集。当项目数量增加时,发现这些项目变得越来越困难。。。你和谁打交道?我使用Lexware汇编参考工具。。。在VS中的“工具”菜单下提供一个菜单选项,用于查看引用是程序集引用还是项目引用、DLL的提示路径、复制本地、特定版本以及其他引用属性。它还允许您在一个窗口中编辑这些属性 适用于VisualStudio2010 适用于Visual Studio 2005/20

当我在解决方案中包括一些项目并将引用更改为项目引用时,有时它仍然加载错误的程序集,因为有其他东西首先调用它,而我的解决方案中不包括该程序集。当项目数量增加时,发现这些项目变得越来越困难。。。你和谁打交道?

我使用Lexware汇编参考工具。。。在VS中的“工具”菜单下提供一个菜单选项,用于查看引用是程序集引用还是项目引用、DLL的提示路径、复制本地、特定版本以及其他引用属性。它还允许您在一个窗口中编辑这些属性

适用于VisualStudio2010

适用于Visual Studio 2005/2008

另请注意:如果一个项目有一个项目引用,并且您在解决方案中有该项目,但引用的项目不包括在内,则引用的项目将不会生成,并且您将使用引用项目的bin文件夹中本地复制的dll(即,引用项目的上次成功生成是什么)。如果引用项目的dll没有本地副本,则生成将失败

如果,在构建顺序的继承权中,一个项目首先被编译,但有一个引用dll的较旧构建,那么对于更高的构建,您会遇到这个问题。原因是引用的dll被复制到bin文件夹。因此,当第二个项目编译时,它会查找对根编译项目中最低dll的引用,并发现bin文件夹中已经有一个副本(尽管是旧版本)

解决方案:
(1) 将引用的项目本身包括在您的解决方案中
(2) 将项目引用更改为dll引用,并引用独立编译的本地受控版本。
(3) 手动更改项目的生成顺序(不推荐)


希望通过一个图表来说明这一点:

Solution
   |
    --Project 1 (references project 2 and project 3)
   |    \bin
   |   
   |
    --Project2 
   |    \bin 
   |      \proj4.dll (v1.5)
   |        
    --Project 3
        \bin
          \proj4.dll (v1.2)
构建解决方案时,project 1首先强制编译project 3,并将所有相关DLL复制到其bin文件夹中。结构现在看起来像:

Solution
   |
    --Project 1 (references project 2 and project 3)
   |    \bin
   |      \proj3.dll
   |      \proj4.dll (v1.2)
   |   
   |
    --Project2 
   |    \bin 
   |      \proj4.dll (v1.5)
   |        
    --Project 3
        \bin
          \proj4.dll (v1.2)
Solution
   |
    --Project 1 (references project 2 and project 3)
   |    \bin
   |      \proj2.dll
   |      \proj3.dll
   |      \proj4.dll (v1.2)
   |   
   |
    --Project2 
   |    \bin 
   |      \proj4.dll (v1.5)
   |        
    --Project 3
        \bin
          \proj4.dll (v1.2)
接下来将编译项目2,但由于默认情况下特定的版本设置为false,因此项目1将看到它的bin目录中已经有一个proj4.dll版本,这对于项目2来说已经足够了。因此,它将只复制proj2.dll,结构如下所示:

Solution
   |
    --Project 1 (references project 2 and project 3)
   |    \bin
   |      \proj3.dll
   |      \proj4.dll (v1.2)
   |   
   |
    --Project2 
   |    \bin 
   |      \proj4.dll (v1.5)
   |        
    --Project 3
        \bin
          \proj4.dll (v1.2)
Solution
   |
    --Project 1 (references project 2 and project 3)
   |    \bin
   |      \proj2.dll
   |      \proj3.dll
   |      \proj4.dll (v1.2)
   |   
   |
    --Project2 
   |    \bin 
   |      \proj4.dll (v1.5)
   |        
    --Project 3
        \bin
          \proj4.dll (v1.2)
如果有人不同意,请随时纠正我。但我很确定这就是为什么你会看到你所看到的(如果我理解这个问题的话)