![](/img/trans.png)
[英]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.