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

posted @ 2017-09-18 20:41  sun51586  阅读(1225)  评论(0编辑  收藏  举报