在针对不同环境执行web.config转换时出错

时间:2013-02-08 16:07:48

标签: visual-studio-2012 web-config-transform

我试图将我的应用部署到不同的环境然后我开始遵循以下方法: Deploying an ASP.NET Web Application to a Hosting Provider using Visual Studio or Visual Web Developer: Web.Config File Transformations - 3 of 12

非常完美,直到我点击了预览转换,我收到了这个错误:

  

Microsoft Visual Studio

     

无法加载文件或程序集“Microsoft.Web.XmlTransform,Version = 1.2.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”或其依赖项之一。系统找不到指定的文件。

(我只创建了一个转换 Web.DebugQA.config ,当然还有默认的转换,调试和发布)

我的 Web.DebugQA.config 如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="MyDB" 
      connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" 
      xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <system.web>
  </system.web>
  <appSettings>
    <add key="EnvironmentName" value="QADev" xdt:Transform="SetAttributes(value)"
      xdt:Locator="Match(key)" />
  </appSettings>
</configuration>

然后我安装了这个插件:

SlowCheetah - XML Transforms

我解决了我的预览转换错误,但是当我尝试使用QADev转换发布时出现了这个错误:

  

“ImportParametersFile”任务意外失败。

     

System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.Web.XmlTransform,Version = 1.2.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”或其依赖项之一。该系统找不到指定的文件。   文件名:'Microsoft.Web.XmlTransform,Version = 1.2.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'
     在Microsoft.Web.Publishing.Tasks.ImportParametersFile.Execute()
     在Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
     在Microsoft.Build.BackEnd.TaskBuilder。&lt; ExecuteInstantiatedTask&gt; d__20.MoveNext()

     

警告:装配装订日志已关闭   要启用程序集绑定失败日志记录,请将注册表值[HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)设置为1   注意:程序集绑定失败日志记录会导致性能损失   要关闭此功能,请删除注册表值[HKLM\Software\Microsoft\Fusion!EnableLog]

我正在使用Visual Studio Pro 2012。

5 个答案:

答案 0 :(得分:32)

我通过从控制面板修复“Microsoft ASP.NET和Web Tools 2013.1 - Visual Studio 2012”来修复此问题 - &gt;程序和功能。

路径C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web中缺少文件Microsoft.Web.XmlTransform.dll。

答案 1 :(得分:3)

我有类似的错误,虽然它是由不同的原因引起的。

我解决了从安装了VS2012的另一台PC复制以下DLL的问题: Microsoft.Web.XmlTransforms.dll

来自: C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web

我希望这会有所帮助

答案 2 :(得分:1)

我在VS2012中遇到同样的问题,无法为PublishPackage转换'预览转换',例如Web.Staging.config抱怨Microsoft.Web.XmlTransform

我通过将包https://nuget.org/packages/Microsoft.Web.Xdt添加到我的Mvc 4.5项目来实现它。该软件包仍处于预发布状态。

PM> Install-Package Microsoft.Web.Xdt -Pre

此软件包包含Microsoft.Web.XmlTransform.dll

在构建抱怨“无法加载文件或程序集Microsoft.Web.XmlTransform”时,我仍然收到错误。 Mvc项目仍然没有建成。

我尝试使用gacutil将Microsoft.Web.XmlTransform.dll添加到Gac,但这并没有解决问题。

但是我使用Team Foundation Service构建服务器,它在应用Web.Release.config然后应用Web.Staging.config后工作并创建正确的Web.config。

答案 3 :(得分:1)

我试过以下两件事,但它对我没用。

1)将Microsoft.Web.XmlTransforms.dll DLL复制到位置C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web

2)修复“Microsoft ASP.NET和Web Tools 2013.1 - Visual Studio 2012”

然后我从控制台卸载了Microsoft Azure工具V2.6 - &gt;程序和功能。然后我就可以发布我的网站了。

答案 4 :(得分:0)

这可能已在Visual Studio 2012 Update 2(和Visual Studio 2013)中修复。

  

Web.config "Preview Transform" gives an error

     
    

...

         

Microsoft于2013年3月1日下午2:46发布

         

感谢您报告此问题!它将在Visual Studio 2012 Update 2中修复。请在可用时安装。