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>

  • 相关阅读:
    【面向对象-天龙八部】
    【面向对象-作业】
    【OOP】面向对象的程序开发
    nmcli命令详解(创建热点,连接wifi,管理连接等)
    构造函数&&继承8.1
    Set集合之TreeSet类
    Set集合之HashSet类
    HDFS上传数据的流程
    zookeeper的安装与配置
    hive介绍、安装配置、表操作基础知识适合小白学习
  • 原文地址:https://www.cnblogs.com/sun51586/p/7545046.html
Copyright © 2011-2022 走看看