我有一个.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)。
Newtonsoft.Json
包.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>
答案 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)
答案 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企业版 发布资料:文件夹
执行以下步骤:
这应该像对我一样进行修复。之后,我就可以轻松地发布了。
我希望这会有所帮助。
答案 5 :(得分:0)
我解决问题
选中“在运行时使用此连接字符串”
取消选中“默认连接字符串”
答案 6 :(得分:0)
如果您要发布到本地文件系统。检查文件夹是否具有 Visual Studio 复制已发布文件所需的读/写权限。