zoukankan      html  css  js  c++  java
  • .NetCore2.0引用DLL报System.InvalidOperationException: Can not find compilation library location for package 'XXX'

    .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>

  • 相关阅读:
    性能测试——监控前端性能
    centos7 查看防火墙状态
    Flutter项目实战之女装商城------火爆专区实现、商品分类数据准备
    鸿蒙系统,我要拥抱你~~
    【python3】python中 r'', b'', u'', f'' 的含义
    【python3】excel输入输出
    【python3】return和yield的区别
    【python3】spyder中清除变量命令
    【文章知识点】深度解析长末端重复反转录转座子(LTR-RTs)
    【python3】给List添加元素
  • 原文地址:https://www.cnblogs.com/sun51586/p/7545046.html
Copyright © 2011-2022 走看看