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>

  • 相关阅读:
    关联本地代码的方式 HTTPS和SSH---Gitee码云
    详解elementUI表单的验证规则---vue(基本用法)
    vscode 设置缩进 4
    vue的图片懒加载
    A complete log of this run can be found in问题解决
    简单直观的搞懂Vue3的ref、reactive、toRef、toRefs
    vue-cli3.0 引入外部字体并使用
    迅为与龙芯强强联合匠心之作iTOP-2K1000开发板正式发布
    迅为RK3399开发板外接固态硬盘测试
    迅为i.MX6Q开发板Ubuntu20.04 Can通信
  • 原文地址:https://www.cnblogs.com/sun51586/p/7545046.html
Copyright © 2011-2022 走看看