gpt4 book ai didi

visual-studio - 当 之外的文件被更改时,如何避免 Visual Studio 增量构建不运行?

转载 作者:行者123 更新时间:2023-12-05 00:12:44 27 4
gpt4 key购买 nike

我有一个 VS2017 csharp 项目,.csproj 文件如下所示:

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
<MyItem Include="file.dat" />
</ItemGroup>

<PropertyGroup>
<PrepareResourcesDependsOn>
$(PrepareResourcesDependsOn);
MyCompileTarget
</PrepareResourcesDependsOn>
<CoreCompileDependsOn>
$(CoreCompileDependsOn);
MyCompileTarget
</CoreCompileDependsOn>
</PropertyGroup>

<Target Name="MyCompileTarget" Inputs="@(MyItem)" Outputs="@(MyItem->'%(FileName).out')">
...
</Target>
</Project>

哪里 MyCompileTarget是生成 file.out 的目标来自 file.dat (在实际代码中,增量构建目标和属性位于通过 NuGet 包自动包含的目标文件中)。

问题是,如果我改变 file.dat然后按 构建 , 目标被执行 完全 , (但 MyTarget 可以通过 重建 或使用 msbuild 运行时正确执行)。我希望 MyCompileTarget被执行以便 file.out文件已更新。

如果我使用 BeforeBuild 也会出现同样的问题或 AfterBuild而不是 PrepareResourcesDependsOn等等。

除非 @(Compile) 中的某个文件,否则似乎不会启动 Visual Studio 增量构建或 @(EmbeddedResource)被改变。确实,如果我添加以下内容
<EmbeddedResource>file.dat</EmbeddedResource>

增量构建按预期工作(但显然我不想将 file.dat 嵌入到生成的程序集中)。

如果 file.dat,是否可以强制 Visual Studio 启用增量构建被修改,如果对应生成的文件早于 file.dat或者它不存在?

注意:使用 VS2015 和 .NET CORE 或 .NET FRAMEWORK 也会出现同样的问题。
此外,如果我更改 csharp 文件,将触发增量构建,因此它会触发 MyTask ,但前提是 file.dat比生成的文件新(正如预期的那样)。

提前致谢,
法比奥。

最佳答案

Is it possible to force Visual Studio to enable incremental build if file.dat is modified



您可以设置属性 DisableFastUpToDateChecktrue在项目文件中禁用 FastUpToDateCheck对于 Visual Studio 构建管理器:
<PropertyGroup>
<DisableFastUpToDateCheck>True</DisableFastUpToDateCheck>
</PropertyGroup>

查询 MSDN关于 DisableFastUpToDateCheck:

A boolean value that applies to Visual Studio only. The Visual Studio build manager uses a process called FastUpToDateCheck to determine whether a project must be rebuilt to be up to date. This process is faster than using MSBuild to determine this. Setting the DisableFastUpToDateCheck property to true lets you bypass the Visual Studio build manager and force it to use MSBuild to determine whether the project is up to date



更新:

此外,我们可以设置 UpToDateCheckInput到项目:
<UpToDateCheckInput Include="file.dat" />

关于visual-studio - 当 <Compile> 和 <EmbeddedResource> 之外的文件被更改时,如何避免 Visual Studio 增量构建不运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50026355/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com