Visual Studio更新不应构建的项目的二进制文件

时间:2017-02-15 02:36:17

标签: c# .net visual-studio visual-studio-2013 projects-and-solutions

我试图阻止description覆盖我在构建过程中不应该使用的项目的二进制文件夹。对以下解决方案结构进行成像:

Visual Studio

每次我尝试构建 App1 -> LibB -> LibA 项目(构建/重建)时,它都会替换LibB二进制文件夹中的LibA.dll。真正的问题是App1LibA.dll使用的App1的不同版本。成像我有另一个LibB项目:

App2

现在,每当我构建 App1 -> LibB (v2) -> LibA (v2) App2 -> LibB (v2) -> LibA (v2) LibB (v2) -> LibA (v1) 项目时,它都会破坏我的App1项目的二进制文件夹,因为当构建App2项目时,它会移动{{1}到我的LibB二进制文件夹,这不是预期的行为。

ps#1:我无法更新LibA.dll (v1)以使用App2只是因为它是一个简化的问题描述,并且有很多依赖项,如上所述。让我们说它将成为我的长期解决方案。

ps#2:如果您尝试构建LibB (v2)项目,它将使用LibA (v2)更新LibBApp1二进制文件夹,并破坏这两个应用项目。

ps#3:我重新创建了一个具有类似依赖关系模型的测试解决方案,它运行得很好,因此它是我尝试解决的现有解决方案的问题。

如何在构建子项目时阻止App2更新父项目?

4 个答案:

答案 0 :(得分:1)

在Visual Studio中使用项目引用时,Visual Studio的设计是为了使它们保持同步,这是设计使然。如果您在多个应用程序中共享库,则应将它们放在不同的解决方案中,并使用像nuget这样的包管理产品来管理解决方案之间的依赖关系。

答案 1 :(得分:1)

  

如何在构建子项目时阻止Visual Studio更新父项目?

     

每次我构建App1项目时,它都会破坏我的App2项目的二进制文件夹,因为当构建LibB项目时,它会将LibA.dll(v1)移动到我的App2二进制文件夹,这不是预期的行为。

我相信它是按设计的,从来没有一种方法可以阻止App1破坏你的App2项目的Bin文件夹,就是复制Project Files(.csproj)并更改Project Properties中的Output Bin文件夹。

然后有几个不同的解决方案文件(.sln)来打开不同的版本参考配置项目。

答案 2 :(得分:1)

确保您对项目的依赖项进行了排序,并且 Configuration Manager 设置适用于解决方案级别的构建

您始终可以在解决方案中单独构建特定项目

答案 3 :(得分:0)

不要使用项目引用,而是从某些外部文件夹(如 C:\ DeployedBinaries )链接到已编译的库的二进制文件,并在需要时将所需的二进制文件复制到手动C:\ DeployedBinaries