加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

Razor页面在运行时无法在ASP.NET Core RC2中看到引用的类库

发布时间:2020-12-16 00:26:02 所属栏目:asp.Net 来源:网络整理
导读:我为RC2版本启动了一个新的MVC Web应用程序项目,我试图添加一个类库作为项目引用。 我向我的项目添加了一个简单的类库,并引用它,并在project.json文件中获得以下内容: "frameworks": { "net452": { "dependencies": { "MyClassLibrary": { "target": "pr
我为RC2版本启动了一个新的MVC Web应用程序项目,我试图添加一个类库作为项目引用。

我向我的项目添加了一个简单的类库,并引用它,并在project.json文件中获得以下内容:

"frameworks": {
  "net452": {
    "dependencies": {
      "MyClassLibrary": {
        "target": "project"
      }
    }
  }
},

我可以在任何Controllers和Startup.cs文件中使用这个库,但没有任何麻烦,但是当我从Razor页面尝试使用库时,运行时会收到以下错误:

The name ‘MyClassLibrary’ does not exist in the current context
Output.WriteLine(MyClassLibrary.MyStaticClass.SomeStaticString);

这很奇怪,因为当我编辑剃须刀页面时,我正在获得类库的智能感知,我找不到任何表示你不能从这里使用项目引用的东西。

我认为这是很难让这个运行在RC1下的“包文件夹”在类库项目,但这让我陷入困境。

解决方法

问题页面上发布了一个解决方法(cred to pranavkm and patrikwl)
https://github.com/aspnet/Razor/issues/755

显然,您需要使用RazorViewEngineOptions.CompilationCallback显式添加对Razor编译的引用。

将以下内容添加到Startup类中的ConfigureServices方法中:

var myAssemblies = AppDomain.CurrentDomain.GetAssemblies().Select(x => MetadataReference.CreateFromFile(x.Location)).ToList();

services.Configure((RazorViewEngineOptions options) =>
{
    var previous = options.CompilationCallback;
    options.CompilationCallback = (context) =>
    {
        previous?.Invoke(context);

        context.Compilation = context.Compilation.AddReferences(myAssemblies);
    };
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读