我目前正在创建一个解决方案,必须与localdb和sqlservercompact 4.0一起工作,首先使用EntityFramework代码。因此,我创建了额外的构建配置:LocalDb和SQLCE。显然,我需要不同的app.config文件为这些构建配置。我发现了这个很好的解决方案,并使用了它的第二个选项:通过使用AfterBuild指令来改变MSBuild行为。因此,我在wpf应用程序的项目文件中包含了下面的XML:
<Target Name="AfterBuild">
<Delete Files="$(TargetDir)$(TargetFileName).config" />
<Copy SourceFiles="$(ProjectDir)ConfigApp.$(Configuration).config" DestinationFiles="$(TargetDir)$(TargetFileName).config" />
</Target>
这在我家里的Win8开发笔记本电脑上运行得很好,但似乎在我工作的Win7桌面上忽略了这个指令。我注意到,我的class.dll已经注释掉模板以添加PreBuild和AfterBuild指令,wpf应用程序没有它。我检查了Build屏幕,看看指令是否被执行,它是。似乎这个变化没有被再次发现或覆盖。发生了什么?
没关系:上面的解决方案适用于类库,例如用于单元测试项目。对于桌面应用程序,你需要Slow Cheetah。