app_code查找class的assemblyqualifiedname

时间:2013-10-25 11:34:02

标签: asp.net assemblies app-code

我一直关注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文件中使用它。

有没有办法让这个值固定,所以这个值固定不变?

2 个答案:

答案 0 :(得分:1)

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

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

要从一种类型的项目迁移到另一种类型,您可以在此处找到建议:Converting a Web Site Project to a Web Application Project

答案 1 :(得分:0)

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

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

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

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

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

    import Foundation
    class Website { 
                 var name:String
                 var pictureLabel:String
    
        init(title:String,pictureLabel:String) {
            name = title
            pictureLabel = picture
        }
    }