簡體   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