“ TransformAppSettings”任务意外失败

时间:2019-07-11 19:46:48

标签: blazor-server-side .net-core-3.0

我有一个.NET Core 3 Blazor(服务器端)应用程序,我最近将其从Preview 5版本升级到了.NET Core 3.0.1 Preview 6版本。当我在本地构建并运行它时,它可以正常工作;但是,当尝试将其发布到文件系统文件夹(以Framework-Dependent模式)时,它将引发以下错误:

  

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,版本= 10.0.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed”或其依赖项之一。该系统找不到指定的文件。   文件名:“ Newtonsoft.Json,版本= 10.0.0.0,文化=中性,PublicKeyToken = 30ad4fe6b2a6aeed”

     
    在Microsoft.NET.Sdk.Publish.Tasks.AppSettingsTransform.UpdateDestinationConnectionStringEntries(String 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()

  

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

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

  • 清洁/重建解决方案
  • 重新安装.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>

7 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我所做的就是取消选中“在运行时使用此连接字符串”数据库选项,因为我的azure服务器将进行设置,无论如何这都不是问题。

enter image description here

答案 2 :(得分:0)

我有同样的问题

Same Question on Stack Overflow

尽管我设法通过Powershell命令发布了项目

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

尝试一下,希望对您有帮助...

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

我知道这已为您解决。但就我个人而言。

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

执行以下步骤:

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

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

我希望这会有所帮助。

答案 5 :(得分:0)

我解决问题

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

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

答案 6 :(得分:0)

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