.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>
.NetCore2.0引用DLL报System.InvalidOperationException: Can not find compilation library location for package 'XXX'
原文地址:http://www.cnblogs.com/sun51586/p/7545046.html