如何在内置的visual studiodebugging器服务器中使用Web.debug.config?
我怎样才能在Visual Studio 2010内置debugging器中合并和使用Web.debug.config
?
这是一个已知的错误。 该function现在只能用作部署过程的一部分。
请注意,如果你也遇到这个问题,那么这个问题会尽快修复。
这其实很简单,不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=""$(DevEnvDir)tf.exe" checkout "$(ProjectDir)Web.config"" /> <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>