【问题标题】:C# dependecies aren't being included with publishC# 依赖项不包含在发布中
【发布时间】:2018-04-16 02:38:40
【问题描述】:

我正在尝试将 .NET Core 中内置的 Web API 发布到 Ubuntu 服务器,但在依赖项方面遇到了困难。我是在 C# 中执行此操作的新手,并且还没有找到关于如何在发布命令中包含依赖项的简明答案。我被引导相信它们已被编译为 .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”目录中了吗?

我在 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>

【问题讨论】:

  • 请显示您的.csproj 文件的内容。路径以 lib 开头的事实令人怀疑——你不是在使用 NuGet 来包含 Newtonsoft.Json 吗?
  • 我用VS添加了依赖,不是为你运行NuGet还是后台进程获取依赖?从 VS 本地运行可以正常工作
  • 再次,请显示相关库的.csproj 文件。没有它,这个问题就无法回答。
  • @NightOwl888 现在应​​该添加
  • @recursivePython,我猜我知道这是什么但要确认;您可以访问远程服务器吗?如果是这样,在发布后,您可以查看 bin 并查看 Newtonsoft.Json.dll 是否在其中吗?我猜是这样。你能确认它的版本吗?

标签: c# dependencies .net-core publish


【解决方案1】:

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

没有。

当您发布项目时,您在创建发布配置文件时为发布输出指定不同的目录。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 2014-04-04
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多