Skip to main content
 首页 » 编程设计

c#之找不到包 'Microsoft.AspNet.WebApi.Client' .Net Core 2.2 的编译库位置

2024年02月25日34mate10pro

我安装了 .net core 2.2.0,我正在尝试从我使用 Visual Studio 2017 发布的同一台 PC 的部署文件夹运行我的 asp.net core mvc 应用程序的发布版本。

当我去运行它时,项目启动并按预期在我的 443 端口上启动网络服务器,但是当我访问服务器时,Kestrel 吐出一条错误消息:

fail: Microsoft.AspNetCore.Server.Kestrel[13] 
      Connection id "0HLLBBV3878EF", Request id "0HLLBBV3878EF:00000003": An unhandled exception was thrown by the application. 
System.InvalidOperationException: Cannot find compilation library location for package 'Microsoft.AspNetCore' 
   at Microsoft.Extensions.DependencyModel.CompilationLibrary.ResolveReferencePaths(ICompilationAssemblyResolver resolver, List`1 assemblies) 
   at Microsoft.Extensions.DependencyModel.CompilationLibrary.ResolveReferencePaths() 
   at Microsoft.AspNetCore.Mvc.ApplicationParts.AssemblyPart.<>c.<GetReferencePaths>b__8_0(CompilationLibrary library) 
   at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.MoveNext() 
   at Microsoft.AspNetCore.Mvc.Razor.Compilation.MetadataReferenceFeatureProvider.PopulateFeature(IEnumerable`1 parts, MetadataReferenceFeature feature) 
   at Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartManager.PopulateFeature[TFeature](TFeature feature) 
   at Microsoft.AspNetCore.Mvc.Razor.Internal.DefaultRazorReferenceManager.GetCompilationReferences() 
   at System.Threading.LazyInitializer.EnsureInitializedCore[T](T& target, Boolean& initialized, Object& syncLock, Func`1 valueFactory) 
   at Microsoft.AspNetCore.Mvc.Razor.Internal.DefaultRazorReferenceManager.get_CompilationReferences() 
   at Microsoft.AspNetCore.Mvc.Razor.Internal.LazyMetadataReferenceFeature.get_References() 
   at Microsoft.CodeAnalysis.Razor.CompilationTagHelperFeature.GetDescriptors() 
   at Microsoft.AspNetCore.Razor.Language.DefaultRazorTagHelperBinderPhase.ExecuteCore(RazorCodeDocument codeDocument) 
   at Microsoft.AspNetCore.Razor.Language.RazorEnginePhaseBase.Execute(RazorCodeDocument codeDocument) 
   at Microsoft.AspNetCore.Razor.Language.DefaultRazorEngine.Process(RazorCodeDocument document) 
   at Microsoft.AspNetCore.Razor.Language.DefaultRazorProjectEngine.ProcessCore(RazorCodeDocument codeDocument) 
   at Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.Process(RazorProjectItem projectItem) 
   at Microsoft.AspNetCore.Mvc.Razor.Internal.RazorViewCompiler.CompileAndEmit(String relativePath) 
   at Microsoft.AspNetCore.Mvc.Razor.Internal.RazorViewCompiler.OnCacheMiss(String normalizedPath) 
--- End of stack trace from previous location where exception was thrown --- 
   at Microsoft.AspNetCore.Mvc.Razor.Internal.DefaultRazorPageFactoryProvider.CreateFactory(String relativePath) 
   at Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine.CreateCacheResult(HashSet`1 expirationTokens, String relativePath, Boolean isMainPage) 
   at Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine.OnCacheMiss(ViewLocationExpanderContext expanderContext, ViewLocationCacheKey cacheKey) 
   at Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine.LocatePageFromViewLocations(ActionContext actionContext, String pageName, Boolean isMainPage) 
   at Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine.FindView(ActionContext context, String viewName, Boolean isMainPage) 
   at Microsoft.AspNetCore.Mvc.ViewEngines.CompositeViewEngine.FindView(ActionContext context, String viewName, Boolean isMainPage) 
   at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor.FindView(ActionContext actionContext, ViewResult viewResult) 
   at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor.ExecuteAsync(ActionContext context, ViewResult result) 
   at Microsoft.AspNetCore.Mvc.ViewResult.ExecuteResultAsync(ActionContext context) 
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeResultAsync(IActionResult result) 
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResultFilterAsync[TFilter,TFilterAsync]() 
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResultExecutedContext context) 
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted) 
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeResultFilters() 
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter() 
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context) 
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) 
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync() 
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync() 
   at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext) 
   at IdentityServer4.Hosting.IdentityServerMiddleware.Invoke(HttpContext context, IEndpointRouter router, IUserSession session, IEventService events) 
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) 
   at IdentityServer4.Hosting.BaseUrlMiddleware.Invoke(HttpContext context) 
   at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext) 
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application) 

我的 dotnet 绑定(bind)是否存在问题,即发布未生成某些内容,或者我的观点之一访问了不在 .net 核心或其他内容中的内容?

请您参考如下方法:

有同样的错误,对我来说它有助于添加 <MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>在.csproj文件。使用任何文本编辑器对其进行简单编辑,或在 VS 中右键单击您的项目,然后编辑项目文件。在第一个 <PropertyGroup> 中插入属性像这样:

<Project Sdk="Microsoft.NET.Sdk.Web"> 
  <PropertyGroup> 
    <TargetFramework>netcoreapp2.1</TargetFramework> 
    <GeneratePackageOnBuild>false</GeneratePackageOnBuild> 
    <!-- Fix for "System.InvalidOperationException: Cannot find compilation library location for package 'Microsoft.AspNet.WebApi.Client'" --> 
    <MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish> 
  </PropertyGroup> 
  <!-- ... --> 
 <Project> 

然后重新发布。就我而言,问题也只发生在发布时,而不是在 VS 中调试期间。因此,在默认配置中,Razor 的引用似乎没有与其他 Razor 库一起发布。

我使用的是 ASP.NET Core 2.1,但它在 2.2 版上也可能对您有所帮助。