代码之家  ›  专栏  ›  技术社区  ›  David A Gibson

为什么我的MVC应用程序将getExecutingAssembly名称报告为app_web_xxxxx.dll?

  •  1
  • David A Gibson  · 技术社区  · 15 年前

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

    我不想使用beta 2010 Web部署项目,因为我认为我可以利用2010年更新的发布/打包。

    目前,我已经成功地将CruiseControl脚本配置为两次调用msbuild。首先在发布配置中构建解决方案,然后打包MVC项目。

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

    这最终可以工作,但与我使用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中的dll呢?

    干杯

    1 回复  |  直到 15 年前
        1
  •  2
  •   David A Gibson    15 年前

    我发现了这一点——基本上,当我在footer.ascx中调用assembly.getExecutingAssembly时。这意味着代码位于为页脚动态编译的dll中。

    我想要的是MVC网站的动态链接库。所以我在控制器上使用了一个扩展属性,它用程序集信息设置视图状态。

    在我的例子中,我希望再次使用此代码,这样扩展属性就处于不同的资产中,我可以将其包括在各种MVC项目中。这意味着我必须更改代码才能使用assembly.getcallingaassembly,但现在它的工作方式正是我想要的。