Visual studio 2012 在解决方案重建时始终在项目中执行目标,即使项目未修改
我有一个调用外部生成器的msbuild目标,即使未修改包含此目标的项目,也必须始终在解决方案重建时执行该目标 我曾尝试将其附加到Visual studio 2012 在解决方案重建时始终在项目中执行目标,即使项目未修改,visual-studio-2012,msbuild,Visual Studio 2012,Msbuild,我有一个调用外部生成器的msbuild目标,即使未修改包含此目标的项目,也必须始终在解决方案重建时执行该目标 我曾尝试将其附加到$(BuildDependsOn),但它仅在项目被修改时执行 本质上,我必须扩展msbuild用于检查project是否被修改以插入我自己的检查的机制。我猜您是这样做的: <Target Name="MyCustomBeforeBuild" BeforeTargets="BeforeBuild" Inputs="@(Compile)" Outputs="@(Com
$(BuildDependsOn)
,但它仅在项目被修改时执行
本质上,我必须扩展msbuild用于检查project是否被修改以插入我自己的检查的机制。我猜您是这样做的:
<Target Name="MyCustomBeforeBuild" BeforeTargets="BeforeBuild" Inputs="@(Compile)" Outputs="@(Compile->'%(RecursiveDir)%(Filename)%(Extension).generated')">
<Message Text="MyCustomBeforeBuild Begin" Importance="High" />
<Copy SourceFiles="@(Compile)" DestinationFiles="@(Compile->'%(RecursiveDir)%(Filename)%(Extension).generated')" />
<Message Text="MyCustomBeforeBuild End" Importance="High" />
</Target>
但通过指定“假输出”(请参见目标的outputs属性中的.fake
),您可以强制MSBuild每次都执行它(因为假文件不存在,所以不会进行时间戳比较,所以总是执行它)
我想你试过这样做:
<Target Name="MyCustomBeforeBuild" BeforeTargets="BeforeBuild" Inputs="@(Compile)" Outputs="@(Compile->'%(RecursiveDir)%(Filename)%(Extension).generated')">
<Message Text="MyCustomBeforeBuild Begin" Importance="High" />
<Copy SourceFiles="@(Compile)" DestinationFiles="@(Compile->'%(RecursiveDir)%(Filename)%(Extension).generated')" />
<Message Text="MyCustomBeforeBuild End" Importance="High" />
</Target>
但通过指定“假输出”(请参见目标的outputs属性中的.fake
),您可以强制MSBuild每次都执行它(因为假文件不存在,所以不会进行时间戳比较,所以总是执行它)
您可能应该发布目标/项目文件的外观。通常情况下,重建会清理所有项目(无论是否已修改),并重建它们?如果这是解决方案,您也可以删除您的问题(我认为),您可能应该发布您的目标/项目文件的外观。通常情况下,重建会清理所有项目(无论是否修改),并重建它们?如果这是解决方案,您也可以删除您的问题(我认为)在VS2012中构建之前
似乎不起作用,请使用在VS2012中构建之前目标=…
,请参阅我尝试过这种方法,但它不起作用。我也尝试过添加InitialTargets,结果相同。Visual Studio似乎甚至没有在此项目上调用msbuild。并且可以找到解决方案。BeforeBuild
在VS2012中似乎不起作用,请使用BeforeTargets=…
,请参见我尝试过此方法,但不起作用。我也尝试过添加InitialTargets,结果相同。Visual Studio似乎甚至没有在此项目上调用msbuild。并且可以找到解决方案。
<Target Name="MyCustomBeforeBuild" BeforeTargets="BeforeBuild" Inputs="@(Compile)" Outputs="@(Compile->'%(RecursiveDir)%(Filename)%(Extension).generated.fake')">
<Message Text="MyCustomBeforeBuild Begin" Importance="High" />
<Copy SourceFiles="@(Compile)" DestinationFiles="@(Compile->'%(RecursiveDir)%(Filename)%(Extension).generated')" />
<Message Text="MyCustomBeforeBuild End" Importance="High" />
</Target>