簡體   English   中英

當(僅).exe內容項臟時,如何讓VS認為我的項目臟了?

[英]How can I get VS to consider my project dirty when (only) an .exe Content item is dirty?

我的C ++項目包括一組(非代碼)文件,這些文件需要逐字復制到輸出目錄。 我將它們添加為.vcxproj作為Content節點, CopyToOutputDirectory設置為PreserveNewest 例如:

<ItemGroup>
    <Content Include="util.exe">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="lib_util_needs.dll">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <!-- etc. -->
</ItemGroup>

幾乎可行; 當我構建項目時,如果每個內容文件的時間戳比已有的時間戳新,則將其正確復制到輸出目錄。 但是 ...如果我在不同時修改實際編譯代碼文件的情況下更新這些內容文件之一,則Visual Studio 2017會得出結論,該項目已經是最新的,不會生成,並且不會復制新版本的內容文件到輸出目錄。 有什么我可以做的嗎? 無效的事情:

  • Content節點下將PublishState設置為Prerequisite
  • 將內容文件列為代碼文件節點下的DependentUpon節點

編輯:經過進一步調查,似乎該行為取決於內容文件的擴展名。 例如,dll表現出我想要的方式(如果更新了時間戳,則項目標記為臟並已構建),但是exe卻沒有。

當(僅)一個內容項是臟的時,如何讓VS認為我的項目是臟的?

您可以將屬性UpToDateCheckInput設置為以下項目:

<ItemGroup>
    <UpToDateCheckInput Include="util.exe">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </UpToDateCheckInput>
    <!-- etc. -->
</ItemGroup>

或在項目文件中將屬性DisableFastUpToDateCheck設置為true以禁用Visual Studio構建管理器的FastUpToDateCheck

<PropertyGroup>
    <DisableFastUpToDateCheck>True</DisableFastUpToDateCheck>
</PropertyGroup>

檢查有關DisableFastUpToDateCheck的MSDN

一個僅適用於Visual Studio的布爾值。 Visual Studio生成管理器使用名為FastUpToDateCheck的過程來確定是否必須重建項目以保持最新。 此過程比使用MSBuild確定此過程更快。 將DisableFastUpToDateCheck屬性設置為true可讓您繞過Visual Studio構建管理器,並強制其使用MSBuild來確定項目是否最新。

希望這可以幫助。

暫無
暫無

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

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