Visual Studio 2010 - 每个开发人员/机器/环境Web.Config设置

tha*_*kal 9 msbuild visual-studio-2010 post-build-event

想在这里挑选那些MS Build/VS Post构建指数的大脑.

我希望每个用户/机器/环境都可以自定义我的web.config条目.

我可以在web.config中标记我的可配置/可更改条目,并希望这些条目被相应的用户/环境文件覆盖,并希望有一个命令,如果在多个文件中找到该条目,则该命令决定哪些条目应该胜过另一个条目.

例如:web.config有一个$ connectionstring条目,每个用户/环境的自定义文件可能有替换$ connectionstring的潜在值,具体取决于构建解决方案的上下文/配置

这意味着,我可以有一组如下文件:

user_joe.config

       $connectionstring = db_where_joe_like_to_connect_to 
Run Code Online (Sandbox Code Playgroud)

staging.config

       $connectionstring = db_where_staging_connect_to  
Run Code Online (Sandbox Code Playgroud)

production.config

       $connectionstring = db_production
Run Code Online (Sandbox Code Playgroud)

因此,如果joe正在从他的开发框中编译解决方案,那么web.config应该为$ connectionstring具有值"db_where_joe_like_to_connect_to".

我希望有一个不涉及南特的解决方案.

希望有人可以投掷指针.

Ada*_*SFT 7

您可以使用visual studio 2010的web.config转换设置.

http://weblogs.asp.net/gunnarpeipman/archive/2009/06/16/visual-studio-2010-web-config-transforms.aspx

这将允许每个开发人员拥有他们的web.config部分,可以合并为他们的构建设置.

在内部,我们使用从网络上的不同位置拼凑在一起的事件 - 因为通常这在发布期间发生,我们希望它在编译时发生.

添加一个BeforeBuild目标所以 - 从csproj文件:

<Target Name="BeforeBuild">
    <TransformXml Source="$(SolutionDir)Web.config" Transform="$(SolutionDir)Web.$(Configuration).config" Destination="$(SolutionDir)Web.$(Configuration).config.transformed" />
  </Target>
  <PropertyGroup>
    <PostBuildEvent>xcopy "$(SolutionDir)Web.$(Configuration).config.transformed" "$(SolutionDir)Web.config" /R /Y</PostBuildEvent>
  </PropertyGroup>