如何更改Visual Studio的基于反射的项目依赖项的构建顺序?

时间:2016-02-08 22:04:15

标签: c# visual-studio build linker

我需要动态加载相同dll的不同版本,具体取决于各种情况。

dll是作为同一解决方案中其他项目的构建过程的一部分而创建的。

例如

/MainSolution
    /MainProject - Loads dll's using reflection dynamically
    /AbstractProject
    /DllProject1
    /DllProject2

需要在MainProject之前构建DllProject1和DllProject2。 MainProject依赖于AbstractProject,并通过反射DllProject1 / DllProject2。但Visual Studio目前强制MainProject在DllProject1和DllProject2之前构建。如何在MainProject之前让Visual Studio构建DllProject1 / DllProject2?

3 个答案:

答案 0 :(得分:9)

Visual Studio允许您在解决方案中set explicit build dependencies(而不是隐含依赖关系,例如遍历您的引用)。只需右键单击您的解决方案,然后找到Project Dependencies菜单项:

Project Dependencies menu item

打开的对话框允许您设置构建依赖关系并显示计算的构建顺序(您可以通过更改依赖关系来影响顺序)。

答案 1 :(得分:1)

我找到的解决方案是执行以下操作:

打开.sln文件,然后更改列出项目的顺序。将MainProject下拉到底部。然后,当我打开解决方案时,它在构建顺序中的MainProject上面列出了DllProject1和DllProject2。

编辑:虽然这有效,但它没有任何韵律或原因。随机切换订单会导致随机更改具有相同依赖项的项目的构建顺序。

答案 2 :(得分:-1)

我尝试了一个巧妙的技巧,它奏效了-我们有一个相当大的解决方案,并且很难正确维护依赖关系以使解决方案的构建顺序在构建过程中得以实现-碰巧我们的一个小型控制台测试应用程序恰好是按构建顺序排列的-因此,我伪造了该小应用程序的依赖关系,并确定了整个解决方案的构建顺序-KLUDGE-是