我目前正在使用 EntityFramework Code First 创建一个必须同时使用 localdb 和 sqlservercompact 4.0 的解决方案。我为此创建了额外的构建配置:LocalDb 和 SQLCE。显然,这些构建配置需要不同的 app.config 文件。我找到了这个出色的解决方案 并使用了它的第二个选项:使用 AfterBuild 指令更改 MSBuild 行为。因此,我在 WPF 应用程序的项目文件中包含了以下 XML:
<Target Name="AfterBuild">
<Delete Files="$(TargetDir)$(TargetFileName).config" />
<Copy SourceFiles="$(ProjectDir)\Config\App.$(Configuration).config" DestinationFiles="$(TargetDir)$(TargetFileName).config" />
</Target>
这在我在家中的 Win8 开发笔记本电脑上运行良好,但在我工作的 Win7 桌面上似乎忽略了该指令。我注意到我的 class.dll 已注释掉模板以添加 PreBuild 和 AfterBuild 指令,而 WPF 应用程序没有它。我检查了构建屏幕以查看指令是否已执行。似乎更改不会再次被拾取或覆盖。怎么了?