在“宿主VS2017”和自托管构建代理(Windows 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 '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更新……似乎什么也帮不上忙。我不明白它为什么会有不同的行为。
发布概要文件是一个FileSystem配置文件,并指定了以下两个元素:
<TargetFramework>netcoreapp2.1</TargetFramework>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>命令行如下所示:"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
有人知道我能做些什么吗?
发布于 2018-12-17 19:54:58
这一切都是关于运行时标识符的。产生混乱的原因是我假设从dotnet构建和发布就像从Visual构建和发布一样简单。Visual的发布正在对其发布进行完全恢复/构建,发布配置文件具有<RuntimeIdentifier>集。
我做错了几件事。我没有将-r win-x64包含到还原和构建任务中,而是使用了dotnet publish --no-build。所以这就是一个错配的来源。第二个原因是我在构建之后和发布之前运行dotnet test。这正在抹去一些出版所需的东西,但不确定是什么。
我将dotnet test更改为包含-p:RuntimeIdentifier=winx64,因为它显然使用-r来报告输出(显然他们在2.2中添加了-runtime )。
在这个过程中,我学到了一些东西,dotnet在.sln文件中不能很好地工作,至少在build中是这样的,它在文件锁和共享进程方面似乎有一个大问题。试图优化构建任务,以最小化使用dotnet的工作,这是一个大麻烦。
发布于 2019-11-15 09:59:13
我想杰伊在另一个答案中提到了这一点,但为了澄清对我有效的是:-
dotnet restore <path/to/.sln> -r linux-x64在运行dotnet msbuild命令之前。(显然将linux-x64替换为目标)。
https://stackoverflow.com/questions/53798615
复制相似问题