与{{3}}
相比,这是非常不同的问题是我修改了一个未引用项目的csproj(因为它是运行时依赖项)。
例如,在我的csproj文件中,我有:
app.get('API/getRandomWord', function(req, res) {
在我的<Import Project=".\UnreferencedProjects-Developer.targets" />
文件中,我有:
.targets
问题是<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="BuildDependencyForDevelopers" AfterTargets="Build">
<Message Text="========================================" />
<Message Text="Developer Building Unreferenced Projects" />
<Message Text="========================================" />
<!--MSBuild Projects="$(ProjectToBuild)"-->
<MSBuild Projects="../OtherProject/OtherProject.csproj">
<Output ItemName="ProjectOutputs" TaskParameter="TargetOutputs"/>
</MSBuild>
<Message Text="@(ProjectOutputs)"/>
<Message Text="=======================================" />
<Message Text="Developer Copying Unreferenced Projects" />
<Message Text="=======================================" />
<Copy SourceFiles="$(ProjectDir)\..\OtherProject\bin\$(Configuration)\OtherProject.dll" DestinationFolder="$(OutDir)" ContinueOnError="true"/>
<Copy SourceFiles="$(ProjectDir)\..\OtherProject\bin\$(Configuration)\OtherProject.pdb" DestinationFolder="$(OutDir)" ContinueOnError="true"/>
<Message Text="=============================================" />
<Message Text="Developer Finished with Unreferenced Projects" />
<Message Text="=============================================" />
</Target>
</Project>
文件似乎只在手动构建/重建时执行,而不是在启动调试上执行。
所有配置都设置为Build。选项 - &gt;项目和解决方案 - &gt;构建和运行 - &gt;在运行时,当项目过期时:始终构建。
我认为问题在于,因为项目未被引用,所以当我开始调试时,没有过时的项目,所以它在没有构建/重建的情况下启动。如何强制它始终(重新)构建。
答案 0 :(得分:4)
添加到项目中:
<PropertyGroup><DisableFastUpToDateCheck>true</DisableFastUpToDateCheck></PropertyGroup>
这里的关键字是“快速更新检查”:Visual Studio在您调试时使用它以避免启动msbuild。
相关主题:MSBuild Target that always runs when clicking build in VS2013
背景信息:https://msdn.microsoft.com/library/ms171468%28v=vs.110%29.aspx
如果您在Visual Studio UI中开始调试(通过选择F5键或选择Debug,在菜单栏上启动调试),构建过程将使用快速更新检查来提高性能。在某些情况下,自定义构建会创建依次构建的文件,快速更新检查无法正确识别已更改的文件。需要更彻底更新检查的项目可以通过设置环境变量DISABLEFASTUPTODATECHECK = 1来关闭快速检查。或者,项目可以将其设置为项目中或项目导入的文件中的MSBuild属性。