3

我想我一定错过了慢猎豹的一些东西。我创建了一个新的 asp.net mvc3 应用程序。向 web.config 添加了一个具有默认值的 appsetting。然后我为每个调试和发布配置文件添加了一个转换。我还创建了一个读取该值的视图。当我预览转换时,转换工作正常。我的理解是,如果我在发布模式下运行项目,那么项目将从发布转换中读取应用程序设置,如果我在调试模式下运行项目,它将从调试配置中读取应用程序设置。

这是 web.config 的相关部分

<appSettings>      
    <add key="cheetah_val" value="default_val"/>
  </appSettings>

这是 web.debug.config

<?xml version="1.0"?>

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">  

  <appSettings>
    <add key="cheetah_val" value="debug_val" xdt:Transform="Replace" xdt:Locator="Match(key)"/>

  </appSettings>
  <system.web>

  </system.web>
</configuration>

这是 web.release.config

<?xml version="1.0"?>

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

  <appSettings>
    <add key="cheetah_val" value="release_val" xdt:Transform="Replace" xdt:Locator="Match(key)"/>

  </appSettings>
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />

  </system.web>
</configuration>

HomeController.cs

public class HomeController : Controller
    {
        public ActionResult Index()
        {    

            ViewBag.CheetahMessage = System.Configuration.ConfigurationManager.AppSettings["cheetah_val"];   
            return View();
        }          
    }

和 index.cshtml

@{
    ViewBag.Title = "Home Page";
}

<h2>@ViewBag.CheetahMessage</h2>

我希望输出是发布模式下的 release_val 和调试模式下的 debug_val 。我究竟做错了什么?还是我错过了一些重要的东西?对于网站,F5 功能不起作用吗?对于网站,我是否必须实际发布它才能使转换生效?

4

2 回答 2

3

我的理解是,如果我在发布模式下运行项目,那么项目将从发布转换中读取应用程序设置,如果我在调试模式下运行项目,它将从调试配置中读取应用程序设置。

这也是我最初阅读并下载 slowcheetah 时的假设。

对于网站,我是否必须实际发布它才能使转换生效?

AFAIK,您必须同时发布网站和 Web 应用程序项目才能使转换工作。Slowcheetah 甚至不这样做,它是 VS 发布工具。Slowcheetah 只允许您预览变换。

如果我在这方面错了,请说出来,因为我也希望能够在 IIS Express 中进行本地调试时运行转换。

一种可能的解决方案是在您的机器上设置真正的 IIS 以从您的发布目录提供服务。然后,当您想查看转换如何影响行为时,可以将 Web 发布到 IIS 并使用它来查看站点。我认为这不会让您附加调试器。

于 2012-08-05T11:02:00.530 回答
-1

我的理解是,SlowCheetah 是针对 App.Config 而不是 web.config

对 web.config 做同样的事情应该已经是 VS2010 的标准部分。

这是 Scott Hanselman 谈论它(看 6 分 20 秒) http://www.hanselman.com/blog/WebDeploymentMadeAwesomeIfYoureUsingXCopyYoureDoingItWrong.aspx

这是他写的关于 SlowCheetah http://www.hanselman.com/blog/SlowCheetahWebconfigTransformationSyntaxNowGeneralizedForAnyXMLConfigurationFile.aspx

我在我的 app.config 中使用了 SlowCheetah,它运行良好。

于 2012-08-07T10:16:07.950 回答