我有一個C#項目(例如Project.exe),它依賴於a.dll,而a.dll依賴於b.dll。C#:構建項目時依賴項的複製依賴項
當我構建Project.exe時,a.dll被構建並複製到Project.exe的輸出文件夾 - 但b.dll不會被複制到輸出文件夾中。
當Project.exe被構建時,如何將a.dll和b.dll複製到Project.exe的輸出文件夾中?
編輯:我認爲重要的是要指出,我想保持Project.exe和b.dll相互解耦。這首先要有一個.dll文件。
我有一個C#項目(例如Project.exe),它依賴於a.dll,而a.dll依賴於b.dll。C#:構建項目時依賴項的複製依賴項
當我構建Project.exe時,a.dll被構建並複製到Project.exe的輸出文件夾 - 但b.dll不會被複制到輸出文件夾中。
當Project.exe被構建時,如何將a.dll和b.dll複製到Project.exe的輸出文件夾中?
編輯:我認爲重要的是要指出,我想保持Project.exe和b.dll相互解耦。這首先要有一個.dll文件。
您是否嘗試檢查b.dll的複製本地屬性?
看看是否解決了這個問題。
如果沒有,請將b.dll作爲project.exe的參考添加並執行相同的操作。 – Will
是的,「複製本地」設置爲「真」,但這沒有幫助。我知道我可以將b.dll添加爲Project.exe的引用,但我想避免這種情況並保持這些項目的解耦。 – user884248
侯賽因對你的問題的評論可能是當時最好的方法。您可以使用內置變量(如OutDir)作爲生成後事件複製到bin目錄。 – ozemmy
您可以使用msbuild copy命令來實現它。請右鍵單擊項目節點 - >卸載項目 - >右鍵單擊項目 - >編輯project.csproj,將下面的代碼添加到csproj文件中。
<Target Name="AfterBuild">
<Copy SourceFiles="$(MSBuildProjectDirectory)\..\b\$(OutputPath)b.dll" DestinationFolder="$(OutputPath)" ContinueOnError="true"/>
</Target>
以下是供您參考的示例。 https://1drv.ms/u/s!AlvaNEnglADDgQP6j0wRMk5A1DCU
使用AfterBuild的問題是,如果其他人也想使用它,它將被覆蓋並且根本不被執行。更好地使用AfterTargets = 「生成」。 – stijn
執行後構建事件的一種方法:右鍵單擊項目>屬性>構建>構建後,您將不得不編寫一個用於複製dll的批處理命令。 – Husain
這應該只是開箱即用,它是如何引用程序集解析工作。因此我不能重現這一點。如果a.dll將b.dll作爲參考,並且foo.exe將a.dll作爲參考,並且設置了CopyLocal(對於b.dll和a.dll),則b.dll和a.dll都將是複製到foo.exe的目錄。所以你必須提供更多信息。 – stijn
你解決了這個問題,如果問題依然存在,請隨時告訴我。 –