app_code查找类的程序集合格名称

问题描述 投票:0回答:2

我一直在关注Scott Gutheries博客,了解如何自动启动ASP.Net应用程序并遇到程序集名称问题。

首先,我一直关注的网站是:

http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0-series.aspx

我已将以下代码添加到我的applicationHost配置文件中,并且由于类型定义,您可能已经猜到它不起作用。

<serviceAutoStartProviders>
        <add name="PreWarmMyCache" type="MyWebSiteName.PreWarmCache, MyWebSiteName" />
</serviceAutoStartProviders>

我一直在寻找解决方案,并遇到了这个简洁的代码。

Dim _a as New MyApp.PreWarmCache()
_a.GetType().AssemblyQualifiedName

这将产生以下结果。

"MyApp.PreWarmCache, App_Code.<#########>, Version=0.0.0.0, Culture=neutral, PublickKeyToken=null"

我的问题来自上面的程序集名称中的##########,因为它每次运行时都是唯一的,因此我无法在上面的applicationHost文件中使用它。

有没有办法使该值固定,所以该值固定不变并且不会改变?

asp.net assemblies app-code
2个回答
1
投票

如果要控制为站点生成的程序集名称和版本号,则应使用Web应用程序项目而不是Visual Studio中的网站项目。您可以在msdn上阅读有关两种类型的项目的信息:Web Application Projects versus Web Site Projects in Visual Studio

对于应用程序项目,程序集名称不会随每个构建而更改,您可以轻松引用该程序集。

要从一种类型的项目迁移到另一种类型的项目,您会在这里找到建议:Converting a Web Site Project to a Web Application Project


0
投票
  1. 向ASP.NET网站解决方案添加新的类库项目,并将其命名为启动

  2. 在此库中创建一个实现IProcessHostPreloadClient的名为“ ApplicationPreload”的新类。

  3. 在ASP.NET网站中添加新的Startup类库作为参考

  4. 编译您的解决方案,它将Startup.dll添加到您网站的Bin目录中

  5. 将以下内容添加到 sites>部分下的applicationHost.config文件中

    <serviceAutoStartProviders>
        <add name="ApplicationPreload" type="Startup.ApplicationPreload, Startup, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /
    </serviceAutoStartProviders>
    
© www.soinside.com 2019 - 2024. All rights reserved.