繁体   English   中英

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

[英]Visual Studio updates binaries of project which is not supposed to be built

我试图阻止Visual Studio覆盖我在构建期间不应该使用的项目的二进制文件夹。 成像以下解决方案结构:

App1 -> LibB -> LibA

每次我尝试构建LibB项目(构建/重建)时,它都会替换我的App1二进制文件夹中的LibA.dll 真正的问题是不同版本的LibA.dll通过使用App1LibB 成像我有另一个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)更新App1App2二进制文件夹,并破坏这两个应用程序项目。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM