我一直在关注Scott Gutheries博客,了解如何自动启动ASP.Net应用程序并遇到程序集名称问题。
首先,我一直关注的网站是:
我已将以下代码添加到我的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文件中使用它。
有没有办法使该值固定,所以该值固定不变并且不会改变?
如果要控制为站点生成的程序集名称和版本号,则应使用Web应用程序项目而不是Visual Studio中的网站项目。您可以在msdn上阅读有关两种类型的项目的信息:Web Application Projects versus Web Site Projects in Visual Studio。
对于应用程序项目,程序集名称不会随每个构建而更改,您可以轻松引用该程序集。
要从一种类型的项目迁移到另一种类型的项目,您会在这里找到建议:Converting a Web Site Project to a Web Application Project
向ASP.NET网站解决方案添加新的类库项目,并将其命名为启动。
在此库中创建一个实现IProcessHostPreloadClient的名为“ ApplicationPreload”的新类。
在ASP.NET网站中添加新的Startup类库作为参考
编译您的解决方案,它将Startup.dll添加到您网站的Bin目录中
将以下内容添加到 sites>部分下的applicationHost.config文件中
<serviceAutoStartProviders>
<add name="ApplicationPreload" type="Startup.ApplicationPreload, Startup, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /
</serviceAutoStartProviders>