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

sta*_*ker 75 web-config visual-studio-2010

如何Web.debug.config在visual studio 2010内置调试器中合并和使用?

sta*_*ker 92

这是一个已知的错误.该功能现在只能作为部署过程的一部分使用.

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

如果你遇到这个问题,请进行投票,所以这将尽快修复.

  • 对我来说这是一个错误,否则本地服务器上的调试/发布转换的目的是什么?有时设计是错误的,这并不意味着它是正确的:) (25认同)
  • @LordofScripts:当一个bug被关闭"按照设计"时,我有时想说"那么你的设计中就有一个错误!" (17认同)
  • 对于记录,这不是一个错误,它的设计.这些文件用于包/发布.但这不应该阻止任何人投票. (16认同)
  • MS Connect的链接已损坏 (7认同)
  • 当您使用Github并在同步时需要忽略web.config时会出现问题.但是这就失去了备份的目的 - 我的意思是这就是我使用Github的原因.现在将AppHarbor添加到场景中,您必须支持两种类型的web.config文件,因为您确实希望在Github上发布您的apike,因此您必须在同步和发布之前替换配置中的值.这是一个问题.忘记在配置中替换你的值并错误地同步,并猜猜是什么?您的apikeys刚刚进入公共存储库.哎呀,真是个问题. (4认同)

stu*_*uck 34

这实际上很简单,不管你信不信,这似乎是VS的设计方式.

在包含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>
Run Code Online (Sandbox Code Playgroud)

将以下行逐字添加到包含web.config文件的项目的项目属性中的post-build事件.为您希望运行转换的每个构建配置执行此操作.

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

  • 请注意,这将替换原始的`Web.config`,因此*all*您的转换必须是"幂等"(可以在任何其他转换的*结果*上重新应用).如果您将文件放在源代码管理中(您可能应该这样做),它也会阻止您保持理智.整体上是一个"简单"的黑客,它将复杂性/痛苦转移到下一组问题上.好的,如果你能在那里"更好"地解决它,如果你不能解决它会很糟糕.还可以考虑使用$(VisualStudioVersion)而不是对VS版本进行硬编码(你*将*忘记更改它). (6认同)

Mar*_*esa 15

我以更简单的方式解决了这个问题,在.csproj文件的末尾添加了这个,就在标记之前.这与keitn的答案类似,区别在于它不使用post build事件.

<Target Name="BeforeBuild">
    <TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="Web.config" />
</Target>
Run Code Online (Sandbox Code Playgroud)

  • 确认,可以正常工作。但是要小心,它会修改Web.config的本地副本。因此,如果您使用的是诸如RemoveAttributes之类的XSLT转换,则一定会将其删除!与SetAttributes配合使用 (2认同)
  • 这应该是答案。 (2认同)