簡體   English   中英

強制Visual Studio重建依賴項目

[英]Force Visual Studio to rebuild dependent projects

當項目更改時,如何強制Visual Studio 2012重建所有依賴項目?

我有兩個項目:C ++ DLL和C#WPF應用程序。 C#項目有一個post-build命令,用於將DLL復制到Debug文件夾中。

當我修改C ++項目時,DLL被重建,但C#項目不是,因此DLL不會在Debug文件夾中更新。 然后,在看到更新的結果之前,我需要清理並重建解決方案。

我想告訴VS,每當我更新C ++項目時,它應該重建C#項目(或者至少運行post-build命令)。 C#項目依賴於C ++項目,但不是通過引用。

詳細說明彼得的答案,這就是我的所作所為。

右鍵單擊Solution Explorer中的C#項目,然后選擇Add> Existing Item。

瀏覽到C ++輸出文件夾,選擇DLL文件,而不是使用“添加”按鈕打開它,單擊旁邊的下拉按鈕,然后選擇“添加為鏈接”。

我最初做的是右鍵單擊添加到C#項目的鏈接,然后選擇“屬性”,然后將“復制到輸出目錄”更改為“如果更新則復制”。 但后來我意識到將復制Debug版本(因為那是鏈接指向的位置),而不是當前配置。 所以我把它留在Do not copy,因為我的命令行會自動選擇正確的配置。

所以現在C#項目有一個指向C ++項目輸出的鏈接,即使鏈接與項目的輸出無關,它也會在C ++項目發生變化時觸發重建。

為了記錄,這是我在C#項目中的post-build命令行(foobar是C ++ DLL)。

copy "$(SolutionDir)\$(Configuration)\foobar.dll" "$(TargetDir)"

如果在解決方案中設置項目依賴項無助於嘗試將來自C ++項目的.dll作為鏈接包含到另一個項目中,那么它應該認識到文件已更改並應重建項目。

將以下代碼插入每個依賴項目:

<ItemGroup>
    <None Include="$(MSBuildProjectDirectory)\Properties\Build\_buildforcer">
        <Visible>true</Visible>
    </None>
</ItemGroup>
<Target Name="ForceNextBuild"
        AfterTargets="PrepareForRun"
        Condition=" '$(BuildingInsideVisualStudio)' == 'true' ">

    <Touch Files="$(MSBuildProjectDirectory)\Properties\Build\_buildforcer"
           AlwaysCreate="true"/>
</Target>

如果需要,可以通過Import執行此操作。 這會強制項目始終構建,而不僅僅是在項目依賴於更改時。

但是,嘿,這些依賴項目通常是應用程序項目,通常是商業庫之上的薄包裝器。 此外,編譯不是強制這種方式。 只是MSBuild執行所有目標只是為了發現一切都是最新的。 因此,您的F5性能不會大幅降低。

我已明確將None項目標記為Visible ,因為該項目必須可見才能使此機制起作用。 在相關說明中,您可能必須在進行上述更改后重新加載解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM