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>

  • 相关阅读:
    勇气
    Node.js的安装和配置
    jekins构建时,远程执行shell的问题
    CDMA系统原理二
    详解Android定位
    Docker 简介
    Polly+HttpClientFactory
    K8s-Helm
    k8s-部署应用
    K8S-Pod
  • 原文地址:https://www.cnblogs.com/sun51586/p/7545046.html
Copyright © 2011-2022 走看看