代码之家  ›  专栏  ›  技术社区  ›  recursivePython

C#发布中不包含依赖项

  •  2
  • recursivePython  · 技术社区  · 6 年前

    我正在尝试发布内置的web API。NET核心到Ubuntu服务器,但我很难处理依赖关系。我对在C语言中这样做还不熟悉,对于如何在publish命令中包含依赖项,我还没有找到一个简洁的答案。我被引导去相信他们被编入了一个 .dll 但我在运行应用程序时遇到此错误

    Error:
    An assembly specified in the application dependencies manifest (api.deps.json) was not found:
        package: 'Newtonsoft.Json', version: '11.0.2'
        path: 'lib/netstandard2.0/Newtonsoft.Json.dll'
    

    发布后不应该包含在“Release”目录中吗?

    我正在使用。NET内核,然后发布到Ubuntu服务器,这应该会影响这里的任何内容。

    .csproj:

    <Project Sdk="Microsoft.NET.Sdk.Web">
    
      <PropertyGroup>
        <TargetFramework>netcoreapp2.0</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <Folder Include="wwwroot\" />
      </ItemGroup>
    
      <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
        <PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
      </ItemGroup>
    
      <ItemGroup>
        <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
      </ItemGroup>
    
    </Project>
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   NightOwl888 Jabrwoky    6 年前

    发布后不应该包含在“Release”目录中吗?

    发布项目时,可以在创建发布配置文件时为发布输出指定其他目录。

    enter image description here

    发布目录仅用于调试期间使用的资产。在开发过程中,NuGet依赖项不在Release文件夹中,而是在NuGet缓存中。因此,您不能总是复制发布文件夹并期望它运行。

    发布后,整个应用程序(包括所有依赖项)将输出到发布位置。请注意,发布输出不一定必须是文件夹。例如,根据项目的类型,它可能通过web deploy发布到IIS或FTP位置。