EM0*_*EM0 4 c# msbuild build visual-studio-2015
我在 Visual Studio 2015 中有一个 C# DLL 项目 (A),其中包含一个我想复制到输出的自定义配置文件,因此“复制到输出目录”设置为“如果更新则复制”。此 DLL 被同一解决方案中的另一个项目 (B) 引用。每当我重建项目 B 时,项目 A 中的配置文件都会按照我的意愿复制到其输出目录中。
问题是,如果我只修改配置文件,它不会被复制到输出中。我认为这是因为项目 A 的输出没有改变,所以 MSBuild 不会费心将其复制到项目 B 的输出目录。
我发现的一种解决方法是将配置文件的内容类型设置为“嵌入式资源”,这会在配置文件更改时重新构建项目 A。这有效,但它有点黑客。有没有更好的方法来获得相同的行为而不实际在 DLL 中包含配置文件?
好吧,我想我已经想出了一个办法。CustomAdditionalCompileInputs
定义了一个项目组Microsoft.CSharp.Core.targets
,CoreCompile
目标取决于此。所以我简单地添加了以下目标,使 CoreCompile 依赖于所有具有构建操作的文件None
或Content
:
<Target Name="EnsureRecompiledOnConfigFileChanges" BeforeTargets="BeforeBuild">
<!-- Recompile the project if any items of type "None" or "Content" change in case some of them are config files for a DLL. -->
<ItemGroup>
<CustomAdditionalCompileInputs Include="@(None)" />
<CustomAdditionalCompileInputs Include="@(Content)" />
</ItemGroup>
</Target>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
994 次 |
最近记录: |