如何在内置的visual studiodebugging器服务器中使用Web.debug.config?

我怎样才能在Visual Studio 2010内置debugging器中合并和使用Web.debug.config

这是一个已知的错误。 该function现在只能用作部署过程的一部分。

https://connect.microsoft.com/VisualStudio/feedback/details/523221/have-web-debug-config-apply-during-development

请注意,如果你也遇到这个问题,那么这个问题会尽快修复。

这其实很简单,不pipe你信不信,这似乎是VSdevise工作的方式。

在包含web.config的项目的.csproj文件的结束“Project”标记之前,逐字添加以下行。

 <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" /> <Target Name="Transform"> <MakeDir Directories="obj\$(Configuration)" Condition="!Exists('obj\$(Configuration)')" /> <TransformXml Source="Web.Config" Transform="Web.$(Configuration).config" Destination="obj\$(Configuration)\Web.config" StackTrace="true" /> </Target> 

在包含web.config文件的项目的项目属性中,将以下几行逐字添加到构build后事件中。 为每个想要转换运行的构buildconfiguration执行此操作。

 "$(MSBUILDBINPATH)\msbuild" "$(ProjectPath)" /t:Transform /p:Configuration=$(ConfigurationName);Platform=AnyCPU xcopy "$(ProjectDir)obj\$(ConfigurationName)\Web.Config" "$(ProjectDir)". /F /R /Y 

我已经用一种更简单的方法解决了这个问题,在.csproj文件的最后添加了这个标记。 这与keitn的答案类似,区别在于它不使用后期构build事件。

 <Target Name="BeforeBuild"> <TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="Web.config" /> </Target> 

我不想更新我的项目中的web.config只是最后在bin文件夹中的web.config,所以这里是我做的。

将以下内容添加到.csproj的末尾(就在最后一个closures项目标记之前)

 <Target Name="Transform"> <MakeDir Directories="bin" Condition="!Exists('bin')" /> <TransformXml Source="Web.Config" Transform="Web.$(Configuration).config" Destination="bin\$(TargetFileName).config" StackTrace="true" /> </Target> 

然后添加以下后构build步骤

 "$(MSBUILDBINPATH)\msbuild" "$(ProjectPath)" /t:Transform /p:Configuration=$(ConfigurationName);Platform=AnyCPU 

这意味着当你build立一个转换发生从debugging/发布configuration到输出bin目录中的WebsiteName.Config文件,从而不干扰项目中的主要web.config。

在阅读了许多类似的post,并有问题的文件不能被覆盖或web.config不可访问,因为它是只读这是我为我工作:

  <Target Name="BeforeBuild" Condition="$(Configuration) == 'MyAltDebugConfiguration'"> <ItemGroup> <OriginalWebConfig Include="$(ProjectDir)Web.config"/> <TempWebConfig Include="$(ProjectDir)TempWeb.config"/> </ItemGroup> <Exec Command="&quot;$(DevEnvDir)tf.exe&quot; checkout &quot;$(ProjectDir)Web.config&quot;" /> <Copy SourceFiles="@(OriginalWebConfig)" DestinationFiles="@(TempWebConfig)" /> <TransformXml Source="$(ProjectDir)TempWeb.config" Transform="Web.$(Configuration).config" Destination="Web.config" /> </Target> 

笔记:

这作为BeforeBuild目标运行。

我只希望它在特定的configuration(一个替代debugging环境)下运行,所以这就是为什么我有条件。 在通过web部署进行部署时,发布目标将启动,我不需要运行该目标。

我不想记得检查web.config(只有当我完成撤消它),所以我开始转换之前检查web.config。 如果你不使用TFS,你可以删除这一行。

因为VS(2010)\ msbuild不想放弃源web.config我使用临时文件(感谢这篇文章的信息: http : //www.diaryofaninja.com/blog/2011/09/ 14 / using-custom-webconfig-transformations-in-msbuild )

我试图添加一个命令来删除TempWeb.config但VS \ msbuild不想放弃它。 我可以忍受它,因为它不会被添加到TFS。

我知道这是旧的,但我面临同样的问题。 我们有Test,Staging,Liveconfiguration,可以从默认的Web.config中replace端点,连接string等等

但是,我会做以下几点:

  • 右键点击所需的转换configuration(例如Web.Live.config
  • 点击“预览变换”
  • 从右侧复制所有内容(这就是Web.config的外观和转换)
    • CTRL + A + CTRL + C
  • 打开Web.config文件(默认一个)
  • select一切(CTRL + A)并粘贴(CTRL + V)

这并不是很多步骤,当你得到它的时候,它会很快完成。 希望这可以帮助。 🙂

@ologesa:您的解决scheme需要对原始Web.config的写入权限(您必须在TFS中签出)。 更好的解决scheme是直接在bin文件夹中像keitn生成Web.config这样做。 当我们结合keitn和你的解决scheme时,我们得到了这个:

 <Target Name="BeforeBuild"> <Message Text="Transforming Web.config from Web.$(Configuration).config" Importance="high" /> <MakeDir Directories="bin" Condition="!Exists('bin')" /> <TransformXml Source="Web.Config" Transform="Web.$(Configuration).config" Destination="bin\$(TargetFileName).config" StackTrace="true" /> </Target>