Jay*_*Jay 8 msbuild .net-core azure-devops asp.net-core azure-pipelines
在“托管 VS2017”和自托管构建代理 (Windows Server 2012 R2) 上,dotnet publish使用指定的发布配置文件运行失败:
C:\Program Files\dotnet\sdk\2.1.502\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(198,5): error NETSDK1047: Assets file 'C:\agent_work\11\s\ \obj\project.assets.json' 没有 '.NETCoreApp,Version=v2.1/win-x64' 的目标。确保恢复已运行并且您已在项目的 TargetFrameworks 中包含“netcoreapp2.1”。您可能还需要在项目的 RuntimeIdentifiers 中包含“win-x64”。
在本地开发服务器(Win10、VS2017、许多不同的 .net sdk 版本)上,当我使用完全相同的命令行 dotnet 发布时,一切正常。
我已经尝试了所有方法,从更新 VS2017、安装我们所针对的 .net 核心 SDK 和运行时的确切版本、更新构建代理、Windows 更新......似乎没有任何帮助。我不明白为什么它有不同的行为。
发布配置文件是一个文件系统配置文件,并指定了以下两个元素:
<TargetFramework>netcoreapp2.1</TargetFramework>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
Run Code Online (Sandbox Code Playgroud)
命令行看起来像这样: "C:\Program Files\dotnet\dotnet.exe" publish "C:\agent\_work\11\s\Source\TheProject.csproj" --no-build -c Release -f netcoreapp2.1 /p:PublishProfile="Publish Release To Filesystem.pubxml" -o C:\agent\_work\11\a\Website -v d
有没有人知道我能做些什么来让它工作?
事实证明,这完全与运行时标识符有关。之所以产生混淆,是因为我认为从 dotnet-cli 构建和发布与从 Visual Studio 构建和发布一样简单。Visual Studio 的发布正在对其发布进行完整的恢复/构建,并且发布配置文件已完成<RuntimeIdentifier>设置。
我做错了几件事。我没有包括-r win-x64恢复和构建任务,我使用dotnet publish --no-build. 所以这就是一个不匹配的来源。接下来是我在跑步dotnet test在构建之后和发布之前。这消除了一些需要发布的东西,但不确定是什么。
我改为dotnet test包含,-p:RuntimeIdentifier=winx64因为显然它使用 -r 来报告输出(显然他们在 2.2 中添加了 -runtime)。
我在这个过程中学到了一些东西,dotnet-cli不能很好地处理 .sln 文件,至少在构建代理中是这样。文件锁和共享进程似乎有很大的问题。尝试优化构建任务以最大程度地减少 dotnet-cli 的工作是一个主要的痛苦。
| 归档时间: |
|
| 查看次数: |
3485 次 |
| 最近记录: |