Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 如何在内置visual studio调试器服务器中使用Web.debug.config?_Visual Studio 2010_Web Config - Fatal编程技术网

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

Visual studio 2010 如何在内置visual studio调试器服务器中使用Web.debug.config?,visual-studio-2010,web-config,Visual Studio 2010,Web Config,如何在visual studio 2010内置调试器中合并并使用Web.debug.config?这是一个已知的错误。该功能现在只能作为部署过程的一部分使用 如果你也遇到这种情况,请向上投票,以便尽快解决。这实际上非常简单,信不信由你,这似乎是VS设计的工作方式 在包含web.config的项目的.csproj文件的结束“Project”标记之前逐字添加以下行 <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtens

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

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


如果你也遇到这种情况,请向上投票,以便尽快解决。

这实际上非常简单,信不信由你,这似乎是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>

我知道这很古老,但我也面临同样的问题。我们有测试、登台、实时配置,用于替换默认Web.config中的端点、连接字符串等

不过,我会做以下工作:

  • 右键单击所需的转换配置(例如Web.Live.config)
  • 单击“预览变换”
  • 从右侧复制所有内容(这是Web.config在转换时的外观)
    • CTRL+A+CTRL+C
  • 打开Web.config文件(默认文件)
  • 选择所有内容(CTRL+A)并将其粘贴到(CTRL+V)中

这并不是很多步骤,当你掌握了窍门时,它会很快完成。希望这有帮助。:)

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

将以下内容添加到.csproj的末尾(就在最终结束项目标记之前)


这意味着,当您构建一个从debug/release config到output bin目录中的WebsiteName.config文件的转换时,不会干扰项目中的主web.config。

我用一种更简单的方法解决了这个问题,方法是将它添加到.csproj文件的末尾,就在标记之前。这与keitn的回答类似,不同之处在于它不使用后期构建事件

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

@ologesa: 您的解决方案需要对原始Web.config进行写访问(您必须在TFS中签出)。 更好的解决方案是直接在bin文件夹中生成Web.config,就像keitn那样。当我们将keitn和您的解决方案结合起来时,我们得到了以下结果:

<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>

在阅读了许多类似的文章后,我发现文件无法被覆盖或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目标运行

我只希望它在特定的配置(一个替代调试环境)下运行,这就是为什么我有这样的条件。通过web deploy部署时,发布目标启动,我不需要运行此目标

我不想记着签出web.config(只有在完成后才能撤消它),所以在开始转换之前,我先签出web.config。如果不使用TFS,则可以删除此行

因为VS(2010)\msbuild不想放弃源web.config,所以我使用了一个临时文件(感谢本文提供的信息:)


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

记录在案,这不是一个bug,是出于设计。这些文件用于打包/发布。但这不应阻止任何人投票支持该项目。对我来说,这是一个bug,否则在本地服务器上进行调试/发布转换的目的是什么?有时设计是错误的,但这并不意味着它是正确的:)当您使用Github时,问题出现了,在同步时需要忽略web.config。但这违背了拥有备份的目的——我的意思是,这就是我使用Github的原因。现在,将AppHarbor添加到场景中,您必须支持两种类型的web.config文件,因为您确实希望在Github上发布apikeys,因此您必须在同步和发布之前替换配置中的值。这是个问题。忘记错误地替换配置和同步中的值,你猜怎么着?您的apikeys刚刚进入公共存储库。哎呀,真是个问题。连接到MS Connect的链接是broken@LordofScripts:当一个bug“按设计”关闭时,我有时想说“那么你的设计中有一个bug!”我只建议在$(ProjectDir)和$(ProjectPath)之间添加双引号,以避免在项目路径包含空格时出错。最好使用,正如在中所建议的那样,我能够使用这种方法使转换工作,但我无法达到断点。我已将debug设置为true,但我从未命中断点,并收到以下消息“当前不会命中断点。尚未为此文档加载任何符号。”。这只会发生在我的自定义配置中,如果我将配置设置为“Debug”,效果会很好。有什么想法吗?我必须在$(MSBUILDBINPATH)周围添加双引号以使其工作,否则它将以代码9009退出注意,这将替换原始的
Web.config
,因此所有转换必须是“幂等的”(可以对任何其他转换的结果重新应用)。如果您将文件置于源代码管理中(您可能应该这样做),它还将阻止您保持理智。总的来说,这是一个“简单”的技巧,将复杂性/痛苦转移到下一组问题上。如果你能更好地解决问题,那就好了,如果你不这样做,那就糟糕了。也可以考虑使用$(VisualStudio Exchange),而不是对VS版本进行硬编码(您将忘记更改它)。如果我已经正确理解,那么这是对原始Web.CONFIG文件的破坏性改变。在问题的上下文中,每次启动调试会话时都需要执行这些步骤。经确认,这些步骤有效。但是要小心,它会修改Web.config的本地副本。因此,如果您使用的是XSLT转换,比如RemoveAttributes,那么它肯定会被删除!与SetAttributes配合得很好这到底做了什么
<Target Name="BeforeBuild">
    <TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="Web.config" />
</Target>
<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>
  <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>