"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)。
到目前为止我尝试过的事情:(没有运气)
- Clean/Rebuild解决方案
- 重新安装 .NET Core 3 预览版 6 SDK
- 通过 Nuget 添加
Newtonsoft.Json
包
- 在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>
就我而言,我编辑了发布配置并关闭了数据库 -> 在运行时使用此连接。然后我可以在没有这个错误的情况下发布,但是,我必须手动编辑 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 企业
发布个人资料:文件夹
执行此步骤:
- 将构建选项更改为您要为其发布的环境
(测试、暂存、发布或生产)并清理解决方案。
- 打开您的项目文件夹并删除 bin 和 obj 文件夹。
- 重启Visual Studio
- 重启VS后,删除发布配置文件并重新创建配置文件
这应该像对我一样修复它。之后我就可以轻松发布了。
希望对您有所帮助。
我所做的只是取消选中 "Use this connection string at runtime" 数据库选项,因为我的 azure 服务器会设置它,无论如何这应该不是问题。
当我
我的问题得到解决
选中"Use this connection string at runtime"
未选中 "Default connection string"
如果您要发布到本地文件系统。检查文件夹是否需要 read/write 权限才能 Visual Studio 复制已发布的文件。
我有一个 .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)。
到目前为止我尝试过的事情:(没有运气)
- Clean/Rebuild解决方案
- 重新安装 .NET Core 3 预览版 6 SDK
- 通过 Nuget 添加
Newtonsoft.Json
包 - 在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>
就我而言,我编辑了发布配置并关闭了数据库 -> 在运行时使用此连接。然后我可以在没有这个错误的情况下发布,但是,我必须手动编辑 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 企业 发布个人资料:文件夹
执行此步骤:
- 将构建选项更改为您要为其发布的环境 (测试、暂存、发布或生产)并清理解决方案。
- 打开您的项目文件夹并删除 bin 和 obj 文件夹。
- 重启Visual Studio
- 重启VS后,删除发布配置文件并重新创建配置文件
这应该像对我一样修复它。之后我就可以轻松发布了。
希望对您有所帮助。
我所做的只是取消选中 "Use this connection string at runtime" 数据库选项,因为我的 azure 服务器会设置它,无论如何这应该不是问题。
当我
我的问题得到解决选中"Use this connection string at runtime"
未选中 "Default connection string"
如果您要发布到本地文件系统。检查文件夹是否需要 read/write 权限才能 Visual Studio 复制已发布的文件。