【发布时间】:2021-03-19 08:44:18
【问题描述】:
我有一个 .NET 5.0 项目 ProjectA,它依赖于一个 .NET Standard 2.0 项目 ProjectB。我可以毫无问题地构建和运行 .NET 5.0,包括其依赖项。这两个项目存储在同一个根文件夹中,并且仅依赖于默认配置,生成的库最终位于
ProjectB\bin\Release\netstandard2.0\ProjectB.dll
ProjectA\bin\Release\net5.0\ProjectA.dll
正如预期的那样。
如果我使用 VS Pro 2019 v16.8.6 UI 发布 .NET 5.0 项目,但是,使用发布配置文件
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<DeleteExistingFiles>False</DeleteExistingFiles>
<ExcludeApp_Data>False</ExcludeApp_Data>
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<PublishProvider>FileSystem</PublishProvider>
<PublishUrl>{{ my-url }}</PublishUrl>
<WebPublishMethod>FileSystem</WebPublishMethod>
<SiteUrlToLaunchAfterPublish />
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<ProjectGuid>{{ my-guid }}</ProjectGuid>
<SelfContained>true</SelfContained>
<PublishSingleFile>True</PublishSingleFile>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
</Project>
我最终得到了错误
CSC(0,0):错误 CS0006:找不到元数据文件“ProjectB\bin\Release\netstandard2.0\win-x64\ProjectB.dll”
发布之前的构建仍按预期构建ProjectB,但仍将其保留在netstandard2.0,而不是发布步骤正在查找的netstandard2.0\win-x64。我可以添加一个构建步骤来手动将构建的ProjectB 文件复制到win-x64,但这很笨拙。
有没有办法调整发布配置,以便在正确的位置查找依赖项?
与 StackOverflow 最相关的帖子是 this one,我们在不同的上下文中遇到了相同的问题,解决方案是在发布配置文件中删除 TargetFramework。这样做并不能解决我的问题。
有趣的是,dotnet publish -r win-x64(来自 .NET SDK (5.0.104))确定了在哪里查找 ProjectB 文件,这样就可以了,但似乎无法使用上面的 pubxml(参见 @987654322 @,这里给出的答案都不起作用)。
【问题讨论】:
标签: .net .net-core visual-studio-2019