分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

.NetCore2.0引用DLL报System.InvalidOperationException: Can not find compilation library location for package 'XXX'

发布时间:2023-09-06 01:12责任编辑:蔡小小关键词:暂无标签

.NET CORE 2.0 MVC项目引用类库出现:System.InvalidOperationException: Can not find compilation library location for package ‘XXX‘

临时解决如下(据说2.0.1会修复):
在Startup.cs文件中:
修改:
???????public void ConfigureServices(IServiceCollection services)
???????{
???????????var mvcBuilder = services.AddMvc();
???????????new MvcConfiguration().ConfigureMvc(mvcBuilder);
???????}
添加:
???public class MvcConfiguration : IDesignTimeMvcBuilderConfiguration
???{
???????private class DirectReferenceAssemblyResolver : ICompilationAssemblyResolver
???????{
???????????public bool TryResolveAssemblyPaths(CompilationLibrary library, List<string> assemblies)
???????????{
???????????????if (!string.Equals(library.Type, "reference", StringComparison.OrdinalIgnoreCase))
???????????????{
???????????????????return false;
???????????????}

???????????????var paths = new List<string>();

???????????????foreach (var assembly in library.Assemblies)
???????????????{
???????????????????var path = Path.Combine(ApplicationEnvironment.ApplicationBasePath, assembly);

???????????????????if (!File.Exists(path))
???????????????????{
???????????????????????return false;
???????????????????}

???????????????????paths.Add(path);
???????????????}

???????????????assemblies.AddRange(paths);

???????????????return true;
???????????}
???????}

???????public void ConfigureMvc(IMvcBuilder builder)
???????{
???????????// .NET Core SDK v1 does not pick up reference assemblies so
???????????// they have to be added for Razor manually. Resolved for
???????????// SDK v2 by https://github.com/dotnet/sdk/pull/876 OR SO WE THOUGHT
???????????/*builder.AddRazorOptions(razor =>
???????????{
???????????????razor.AdditionalCompilationReferences.Add(
???????????????????MetadataReference.CreateFromFile(
???????????????????????typeof(PdfHttpHandler).Assembly.Location));
???????????});*/

???????????// .NET Core SDK v2 does not resolve reference assemblies‘ paths
???????????// at all, so we have to hack around with reflection
???????????typeof(CompilationLibrary)
???????????????.GetTypeInfo()
???????????????.GetDeclaredField("<DefaultResolver>k__BackingField")
???????????????.SetValue(null, new CompositeCompilationAssemblyResolver(new ICompilationAssemblyResolver[]
???????????????{
???????????????????new DirectReferenceAssemblyResolver(),
???????????????????new AppBaseCompilationAssemblyResolver(),
???????????????????new ReferenceAssemblyPathResolver(),
???????????????????new PackageCompilationAssemblyResolver(),
???????????????}));
???????}
???}

.csproj中配置(如果有,确定是true,没有则不用管):
<PreserveCompilationContext>true</PreserveCompilationContext>

.NetCore2.0引用DLL报System.InvalidOperationException: Can not find compilation library location for package 'XXX'

原文地址:http://www.cnblogs.com/sun51586/p/7545046.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved