6

我有一个 .NET Core 3 Blazor(服务器端)应用程序,我最近从预览版 5 升级到了 .NET Core 3.0.1 预览版 6 版。当我在本地构建和运行它时,它工作正常;但是当试图将它发布到文件系统文件夹(在框架依赖模式下)时,它会抛出这个错误:

C:\Program Files\dotnet\sdk\3.0.100-preview6-012264\Sdks\Microsoft.NET.Sdk.Publish\targets\TransformTargets\Microsoft.NET.Sdk.Publish.TransformFiles.targets(192,5):错误MSB4018:“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.TransformAppSettings.TransformAppSettingsInternal() 在 Microsoft.NET.Sdk.Publish.Tasks 的 Microsoft.NET.Sdk.Publish.Tasks.AppSettingsTransform.UpdateDestinationConnectionStringEntries(String destinationAppSettingsFilePath, ITaskItem[] destinationConnectionStrings)。在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 的 TransformAppSettings.Execute() 在 Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext()

值得一提的是,在预览版 5 中没有出现此错误。另外,我使用 Visual Studio Enterprise 2019 (Windows)。

到目前为止我尝试过的事情:(没有运气)

  • 清洁/重建解决方案
  • 重新安装 .NET Core 3 预览版 6 SDK
  • Newtonsoft.Json通过 Nuget添加包
  • 在github上搜索社区提出的相关问题

.csproj文件

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <LangVersion>7.3</LangVersion>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="6.1.0" />
    <PackageReference Include="MatBlazor" Version="1.2.0" />
    <PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
    <PackageReference Include="SqlTableDependency" Version="8.5.3" />
    <PackageReference Include="System.DirectoryServices" Version="4.5.0" />
    <PackageReference Include="System.DirectoryServices.AccountManagement" Version="4.5.0" />
    <PackageReference Include="Telerik.UI.for.Blazor" Version="1.1.1" />
  </ItemGroup>

  <ItemGroup>
    <Folder Include="wwwroot\images\" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\{path to project file}" />
  </ItemGroup>

</Project>
4

7 回答 7

6

就我而言,我编辑了发布配置并关闭了数据库 -> 在运行时使用此连接。然后我可以发布而不会出现此错误,但是,我必须手动编辑 web.config 并进行以下更改。

modules="AspNetCorModuleV2"  had to become modules="AspNetCodeModule"

hostingModel="InProcess" had to become hostingModel="OutOfProcess" 

<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /> had to become value="Production"

这些更改已经在我自己的目录 web.config 中,但它们似乎不再在发布中传播。

于 2019-07-17T20:00:52.937 回答
2

我遇到了同样的错误,并且能够通过编辑 .pubxml.user 文件来修复它。

发生错误时,我的发布设置没有选择“在运行时使用此连接”,也没有检查任何数据库迁移。但是当我查看 pubxml.user 文件时,发现有一个对不存在的数据库的引用,该数据库没有显示在发布设置 UI 中。我删除了它,它解决了问题。

于 2019-12-29T19:37:22.043 回答
1

我所做的只是取消选中“在运行时使用此连接字符串”数据库选项,因为我的天蓝色服务器将设置它无论如何它不应该是一个问题。

在此处输入图像描述

于 2020-05-05T06:58:04.763 回答
0

我有同样的问题

关于堆栈溢出的相同问题

虽然我已经设法通过 powershell 命令发布了我的项目

dotnet publish --configuration Release --framework netcoreapp2.2

试试看,希望对你有帮助...

于 2019-07-19T07:15:43.660 回答
0

我知道这已经为你解决了。但在我自己的情况下。

IDE:Visual Studio 2017 Enterprise 发布配置文件:文件夹

请按照以下步骤操作:

  1. 将构建选项更改为您要发布的环境(测试、暂存、发布或生产)并清理解决方案。
  2. 打开您的项目文件夹并删除 bin 和 obj 文件夹。
  3. 重新启动 Visual Studio
  4. 重启VS后,删除发布配置文件并重新创建配置文件

这应该像对我一样解决它。之后我就可以轻松地发布了。

我希望这有帮助。

于 2020-02-02T16:08:36.887 回答
0

当我解决了我的问题

  1. 选中“在运行时使用此连接字符串”

  2. 取消选中“默认连接字符串”

于 2020-05-22T21:27:24.793 回答
0

如果您要发布到本地文件系统。检查文件夹是否需要 Visual Studio 的读/写权限才能复制已发布的文件。

于 2021-02-09T03:12:03.100 回答