[英]Is there a difference when referencing dll binaries or referencing a project in Visual Studio 2008?
[英]Visual Studio updates binaries of project which is not supposed to be built
我试图阻止Visual Studio
覆盖我在构建期间不应该使用的项目的二进制文件夹。 成像以下解决方案结构:
App1 -> LibB -> LibA
每次我尝试构建LibB
项目(构建/重建)时,它都会替换我的App1
二进制文件夹中的LibA.dll
。 真正的问题是不同版本的LibA.dll
通过使用App1
和LibB
。 成像我有另一个App2
项目:
App1 -> LibB (v2) -> LibA (v2) App2 -> LibB (v2) -> LibA (v2) LibB (v2) -> LibA (v1)
现在,每次我正在构建App1
项目时,它都会破坏我的App2
项目的二进制文件夹,因为当构建LibB
项目时,它会将LibA.dll (v1)
移动到我的App2
二进制文件夹,这不是预期的行为。
ps#1:我无法更新LibB (v2)
以使用LibA (v2)
,因为它是一个简化的问题描述,并且有很多依赖,如上所述。 让我们说这将是我的长期解决方案。
ps#2:如果您尝试构建LibB
项目,它将使用LibA.dll (v1)
更新App1
和App2
二进制文件夹,并破坏这两个应用程序项目。
ps#3:我重新创建了一个具有类似依赖模型的测试解决方案,它运行得很好,所以这是我正在尝试解决的现有解决方案的问题。
如何在构建子项目时阻止Visual Studio
更新父项目?
在Visual Studio中使用项目引用时,Visual Studio的设计是为了使它们保持同步,这是设计使然。 如果您在多个应用程序之间共享库,则应将它们放在不同的解决方案中,并使用像nuget这样的包管理产品来管理解决方案之间的依赖关系。
如何在构建子项目时阻止Visual Studio更新父项目?
每次我正在构建App1项目时,它都会破坏我的App2项目的二进制文件夹,因为当构建LibB项目时,它会将LibA.dll(v1)移动到我的App2二进制文件夹,这不是预期的行为。
我相信它是按设计的,从来没有一种方法可以阻止App1破坏你的App2项目的Bin文件夹,就是复制Project Files(.csproj)并更改Project Properties中的Output Bin文件夹。
然后有几个不同的解决方案文件(.sln)来打开不同的版本参考配置项目。
确保您对项目的依赖项进行了排序,并且Configuration Manager设置适用于解决方案级别的构建
您始终可以在解决方案中单独构建特定项目
不要使用项目引用 ,而是从某些外部文件夹(如C:\\ DeployedBinaries)链接到库的已编译二进制文件,并在需要时手动将所需二进制文件复制到C:\\ DeployedBinaries 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.