"TransformAppSettings" 任务意外失败

The "TransformAppSettings" task failed unexpectedly

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

C:\Program Files\dotnet\sdk.0.100-preview6-012264\Sdks\Microsoft.NET.Sdk.Publish\targets\TransformTargets\Microsoft.NET.Sdk.Publish.TransformFiles.targets(192,5): Error MSB4018: The "TransformAppSettings" task failed unexpectedly. System.IO.FileNotFoundException: Could not load file or assembly 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified. File name: 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'

at Microsoft.NET.Sdk.Publish.Tasks.AppSettingsTransform.UpdateDestinationConnectionStringEntries(String destinationAppSettingsFilePath, ITaskItem[] destinationConnectionStrings) at Microsoft.NET.Sdk.Publish.Tasks.TransformAppSettings.TransformAppSettingsInternal() at Microsoft.NET.Sdk.Publish.Tasks.TransformAppSettings.Execute() at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() at Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext()

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

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

.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>

就我而言,我编辑了发布配置并关闭了数据库 -> 在运行时使用此连接。然后我可以在没有这个错误的情况下发布,但是,我必须手动编辑 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,但它们似乎不再在发布中传播。

我有同样的问题

Same Question on Stack Overflow

虽然我已经成功地通过 powershell 命令发布了我的项目

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

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

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

发生错误时,我的发布设置没有选择 "Use this connection at runtime",也没有检查任何数据库迁移。但是当我查看 pubxml.user 文件时,发现有一个对不存在的数据库的引用,它没有出现在发布设置 UI 中。我删除了它并解决了问题。

我知道这已经为您解决了。但就我自己而言。

IDE: Visual Studio 2017 企业 发布个人资料:文件夹

执行此步骤:

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

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

希望对您有所帮助。

我所做的只是取消选中 "Use this connection string at runtime" 数据库选项,因为我的 azure 服务器会设置它,无论如何这应该不是问题。

当我

我的问题得到解决
  1. 选中"Use this connection string at runtime"

  2. 未选中 "Default connection string"

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