我试图阻止description
覆盖我在构建过程中不应该使用的项目的二进制文件夹。对以下解决方案结构进行成像:
Visual Studio
每次我尝试构建
App1 -> LibB -> LibA
项目(构建/重建)时,它都会替换LibB
二进制文件夹中的LibA.dll
。真正的问题是App1
和LibA.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)
更新LibB
和App1
二进制文件夹,并破坏这两个应用项目。
ps#3:我重新创建了一个具有类似依赖关系模型的测试解决方案,它运行得很好,因此它是我尝试解决的现有解决方案的问题。
如何在构建子项目时阻止App2
更新父项目?
答案 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 。