0

我有一个代码可以在部署时复制propper配置文件:

  <PropertyGroup>
    <CopyAllFilesToSingleFolderForPackageDependsOn>
        CopyConfigFiles;
        $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForPackageDependsOn>
  </PropertyGroup>
  <Target Name="CopyConfigFiles">
   <ItemGroup>
    <_ConfigFiles Include="Configurations\*.$(Platform).config" />
    <FilesForPackagingFromProject  Include="%(_ConfigFiles.Identity)">
      <DestinationRelativePath>%(Filename)%(Extension)</DestinationRelativePath>
    </FilesForPackagingFromProject>
   </ItemGroup>
  </Target>

是否可以从结果文件中删除 $(Platform) ?

IE。

  • $(平台)= 生产
  • 来源:connectionString.Production.config
  • 目的地:connectionString.config
4

2 回答 2

0

在我看来,最好的事情是“配置转换”。它们真的很容易学习,非常强大,您只需覆盖 web.config 中针对该特定平台正在更改的部分,并且它们与 Visual Studio 捆绑在一起。看看这个博客 http://blogs.msdn.com/b/webdev/archive/2009/05/04/web-deployment-web-config-transformation.aspx

我希望这会有所帮助。

于 2013-02-22T23:47:01.350 回答
0

另一种解决方案是在项目中实际引用connectionString.config并在预构建 msbuuild 步骤中将其替换为适当的版本。

我们有一种类似的方法来处理特定于环境的配置文件(所以我们有:

  • 网。生产.config
  • 网。暂存.config
  • 网。调试.config

    但是,使用预构建步骤来选择其中一个文件并覆盖现有的 web.config 文件,因此当涉及到执行/部署/打包系统时,系统会处理正确的特定于环境的配置文件,名为web.config

Scott Hanselman在他的博客文章中很好地描述了这种方法

于 2013-02-21T18:25:47.610 回答