【问题标题】:Visual Studio cannot publishVisual Studio 无法发布
【发布时间】:2019-11-26 23:29:49
【问题描述】:

我尝试了一个新项目,只是为了确认我没有犯任何错误,但 Visual Studio 2019 不会发布任何 dot net core 项目。以下是我遇到的错误...任何帮助将不胜感激...

严重性代码描述项目文件行抑制状态 错误“TransformAppSettings”任务意外失败。 System.IO.FileNotFoundException:无法加载文件或程序集“Newtonsoft.Json,Version=10.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed”或其依赖项之一。该系统找不到指定的文件。 文件名:'Newtonsoft.Json,版本=10.0.0.0,文化=中性,PublicKeyToken=30ad4fe6b2a6aeed' 在 Microsoft.NET.Sdk.Publish.Tasks.AppSettingsTransform.UpdateDestinationConnectionStringEntries(字符串 destinationAppSettingsFilePath,ITaskItem[] destinationConnectionStrings) 在 Microsoft.NET.Sdk.Publish.Tasks.TransformAppSettings.TransformAppSettingsInternal() 在 Microsoft.NET.Sdk.Publish.Tasks.TransformAppSettings.Execute() 在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 在 Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext()

警告:程序集绑定日志记录已关闭。 要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 设置为 1。 注意:有一些与程序集绑定失败日志相关的性能损失。 要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。项目名称X 0

这是我的项目文件

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
      <TargetFramework>netcoreapp3.0</TargetFramework>
      <UserSecretsId>aspnet-ProjectNameX-A0D4A38F-C3FA-4FD3-8EBC-0F2201FBCD57</UserSecretsId>
      <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
      <DockerfileContext>..\..\..</DockerfileContext>
  </PropertyGroup>


  <ItemGroup>
      <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="3.0.0-preview6.19307.2" />
      <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.0.0-preview6.19307.2" />
      <PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="3.0.0-preview6.19307.2" />
      <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0-preview6.19304.10" />
      <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0-preview6.19304.10" />
      <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.7.12" />
  </ItemGroup>

在挖掘 Visual Studio 文件夹时,我发现了这个...

【问题讨论】:

  • 你能显示项目的csproj文件吗?
  • 嘿@Stefan 我添加了它
  • 嗯...看起来不错。您在发布期间使用哪些设置?
  • Newtonsoft Json 未添加到包中,没有指向 Newtonsoft Json 库的 PackageReference
  • 我使用 Frame-Dependent & Portable 因为我的目标是在另一台机器上的 Linux 上托管

标签: c# asp.net-core json.net nuget visual-studio-2019


【解决方案1】:

请检查您的解决方案中是否引用了Newtonsoft.Json。似乎找不到解决方案。

下面的链接显示了如何添加它。

https://docs.microsoft.com/en-us/nuget/quickstart/install-and-use-a-package-in-visual-studio

【讨论】:

  • 但是我想知道我应该添加 Newtonsoft.Json Net 版本还是 Net Core 版本?
  • @GithithuWambura 在下面的链接中,在答案中,有步骤stackoverflow.com/questions/18230014/…
  • 我已经有了由“Microsoft.AspNetCore.Identity.UI”库依赖项添加的库。但是感谢您的尝试...我很感激...它仍然无法正常工作...
【解决方案2】:

您可以尝试使用不同的 Visual Studio 2019 实例进行发布吗?当然不是预览版。

【讨论】:

  • 这是一个新项目,我没有编辑任何东西。虽然如果我尝试使用 cmd 发布它,它工作正常......
  • 您可以尝试使用不同的 Visual Studio 2019 实例进行发布吗?当然不是预览版。
【解决方案3】:

该错误与您的项目无关。错误消息“清楚地”表明Microsoft.NET.Sdk.Publish.Tasks.TransformAppSettings.TransformAppSettingsInternal() 试图访问 Newtonsoft.Json。这显然不是你的代码。

我觉得这很奇怪,因为Microsoft.NET.Sdk.Publish.Tasks.dll 与Newtonsoft.Json.dll 存在于同一目录中(检查 c:\program files\dotnet\sdk),并且它应该已针对发布的相同版本进行编译。您可以使用 ILSpy 之类的工具来确认 Newtonsoft.Json 的程序集版本是什么,以及发布任务 dll 有哪些程序集引用。您还可以使用 Fusion Logs 更好地了解 .NET 用于尝试加载 dll 的路径和 dll,以及为什么没有使用具有匹配文件名的任何 dll。但我不会在这里写一篇关于使用 Fusion Logs 的教程。

无论如何,了解它发生的原因并不能帮助您解决它。您真正能做的就是确保您使用的是最新的 SDK,如果不是,请安装最新版本,如果问题仍然存在,请使用 Visual Studio“报告问题”工具让 .NET Core 团队知道这一点。

【讨论】:

  • 这不是 SDK 问题,因为我可以通过 Powershell dotnet publish --configuration Release --framework netcoreapp2.2 发布我的项目,
【解决方案4】:

我遇到了类似的问题。

在包管理器控制台中执行:Update-Package –reinstall Newtonsoft.Json

【讨论】:

  • 嘿,这是反馈​​...项目“src\ProjectNameX”的当前包源中没有可用的包更新。
【解决方案5】:

虽然您没有在 .csproj 中添加包引用。打开你的obj文件夹中的project.assets.json文件,搜索Newtonsoft.Json你会找到你引用的真实版本。

所以只需检查binding redirect 是否可以提供帮助。如果没有,如果您创建一个新的 .net 核心空 web 应用程序,请检查此问题是否仍然存在。然后发布,根据结果是否成功定位问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 2023-04-08
    • 2016-12-09
    相关资源
    最近更新 更多