【问题标题】:Why does my MVC application report the GetExecutingAssembly Name as App_web_xxxxx.dll?为什么我的 MVC 应用程序将 GetExecutingAssembly 名称报告为 App_web_xxxxx.dll?
【发布时间】:2010-07-05 14:00:52
【问题描述】:

我正在更新我们的 CruiseControl.NET 持续集成环境,从使用旧的 Visual Studio 2008 Web 部署项目到 Visual Studio 2010。

我不想使用 Beta 2010 Web Deployment 项目,因为我认为我可以使用 2010 年更新的 Publishing/Packaging。

目前,我已设法将 CruiseControl 脚本配置为调用 MSBuild 两次。首先在 Release 配置中构建解决方案,然后打包 MVC 项目。

然后我从一个可怕的文件路径(这让我怀疑我做的不对,但是嘿)从包中复制正确的文件,并将转换后的 web.configs 复制到测试服务器。

这终于奏效了,但与我使用 2008 年部署项目时不同,此代码将 ExecutingAssembly 作为 App_web_xxxxx.dll 而不是我所追求的 Company.Product.Web.dll 返回。

Dim CurrentAssembly As Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly
Dim version As String = CurrentAssembly.GetName.Version.ToString

我知道 GetName 返回的字符串比名称更长,但我正在调试它以查看它包含的内容。我知道这是编译/缓存的 dll,但为什么它不是 MVC bin 中的那个。

干杯

【问题讨论】:

    标签: vb.net model-view-controller reflection assemblies


    【解决方案1】:

    我想通了 - 基本上是在我在 footer.ascx 中调用 Assembly.GetExecutingAssembly 时。这意味着代码位于页脚动态编译的 dll 中。

    我想要的是 MVC 网站的 DLL。所以我在控制器上使用了一个扩展属性,它用装配信息设置 ViewStates。

    在我的情况下,我将希望再次使用此代码,以便扩展属性位于不同的 Assemmly 中,我可以将其包含在各种 MVC 项目中。这意味着我必须更改代码以使用 Assembly.GetCallingAssembly,但它现在完全按照我的意愿工作。

    【讨论】:

      猜你喜欢
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 2013-07-15
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-15
      相关资源
      最近更新 更多