我为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
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); }; });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。