C#dependecies不包含在发布

时间:2018-04-16 02:38:40

标签: c# dependencies .net-core publish

我试图将内置.NET Core的Web API发布到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'

不应该包含在"发布"发布后的目录?

我在Mac上使用.NET Core然后发布到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 个答案:

答案 0 :(得分:1)

  

发布后,“发布”目录中是否应包含该内容?

没有。

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

enter image description here

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

发布后,整个应用程序(包括所有依赖项)将输出到发布位置。请注意,发布输出不一定必须是文件夹。例如,根据项目类型,可以使用Web部署或FTP位置将其发布到IIS。