【问题标题】:slowcheetah new asp.net mvc transform not workingslowcheetah 新的 asp.net mvc 转换不起作用
【发布时间】:2012-08-02 12:50:45
【问题描述】:

我想我一定是错过了慢猎豹的一些东西。我创建了一个新的 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 功能不起作用吗?对于网站,我是否必须实际发布此内容才能使转换生效?

【问题讨论】:

    标签: asp.net-mvc-3 slowcheetah


    【解决方案1】:

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

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

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

    这是他写的关于慢猎豹的文章 http://www.hanselman.com/blog/SlowCheetahWebconfigTransformationSyntaxNowGeneralizedForAnyXMLConfigurationFile.aspx

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

    【讨论】:

    • 由于 VS2010 已经支持 web.config 的转换文件而不需要 slowcheetah,因此将其放入 slowcheetah 对我来说似乎有点多余。
    【解决方案2】:

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

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

    对于网站,我是否必须实际发布此内容才能获得 转型上班?

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

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

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

    【讨论】:

    • 看到没有其他人在纠正这个问题,我认为它是正确的。我可以通过使 web.config 具有开发人员设置,然后在 Web.Release.config 中进行发布转换来实现我的近期目标。这适用于单个开发人员,但需要所有开发人员都具有相同的设置。我希望进行通用的“F5”转换,但这一定不适用于 Web 应用程序。
    • 如果其他人进来证明我错了,我会很乐意编辑答案,以便您取消标记。就像我说的,我也希望能够在 F5 上进行转换。
    • 这对于内置支持的 Web 项目是正确的,它仅在发布/打包期间启动。如果 SlowCheetah 在后台修改 web.config 可能会导致 VS 出现问题。如果您对启用它的解决方法感兴趣,请准备好我的博客sedodream.com/2010/10/21/…
    • 我真的认为它可以开箱即用,因为插件页面上的图像显示:“F5 -> 变换 -> 运行”。它应该说“发布 -> 转换 -> 运行”?
    猜你喜欢
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 2013-03-20
    • 2011-06-13
    • 2019-07-03
    • 1970-01-01
    相关资源
    最近更新 更多