.net core 命令dotnet发布/测试无生成。由于x64生成,找不到文件

.net core 命令dotnet发布/测试无生成。由于x64生成,找不到文件,.net-core,azure-devops,.net Core,Azure Devops,我有一个包含多个项目的解决方案。它们是c/c++、.NET framework、.NET标准和.NET核心的混合体。以前它只是c/c++和.NETFramework,但现在我们已经升级了其中的大部分 我正在尝试使用VST修改现有的CI管道,VST将构建和发布相关项目,现在它们已转换为dotnet core/standard 由于项目不兼容,我无法使用dotnet build来构建此解决方案,因此我将使用Visual Studio构建任务。那很好 说到测试,我不能使用VisualStudio测试任

我有一个包含多个项目的解决方案。它们是c/c++、.NET framework、.NET标准和.NET核心的混合体。以前它只是c/c++和.NETFramework,但现在我们已经升级了其中的大部分

我正在尝试使用VST修改现有的CI管道,VST将构建和发布相关项目,现在它们已转换为dotnet core/standard

由于项目不兼容,我无法使用
dotnet build
来构建此解决方案,因此我将使用Visual Studio构建任务。那很好

说到测试,我不能使用VisualStudio测试任务,因为它失败了。相反,我使用
dotnetvstest
并以已经构建的单元测试项目dll为目标。这不是很好,但很管用。我必须使用
--no build
开关来确保它不会尝试构建项目,因为这将由于不兼容的项目而失败

要发布主应用程序项目,我需要使用
dotnetpublish
。然而,当我这样做时,我会得到如下错误

error MSB3030: Could not copy the file "xx\bin\release\netstandard2.0\xx.dll" because it was not found. [xx.csproj]
这是因为它找错了地方。这些文件实际上位于xx\bin\x64\release\netstandard2.0中。我可以使用
dotnetpublish-c
指定发布/调试配置,但似乎无法指定路径的平台部分

为了解决这个问题,我将配置改为build为xx\bin\release\netstandard2.0。但是,它仍然失败,并出现与xx\obj\path相关的类似错误

我已经尝试在项目文件中结合使用-r开关和运行时标识符,但这似乎与此问题无关

我也试着在本地运行这些命令,以便更快地掉头并使用设置,但也没有运气。我没有主意了

编辑:

我有一个(相当不令人满意的)解决办法。如果我编辑所有项目文件以包含以下文本,则文件将输出到预期位置,并且发布将起作用:

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <OutputPath>bin\Release</OutputPath>
    <IntermediateOutputPath>obj\Release</IntermediateOutputPath>
  </PropertyGroup>

bin\Release
obj \释放

我不敢相信我需要这么做。这真的是唯一的答案吗?我是否可以将某些内容传递给
dotnetpublish
以使其位于正确的位置?

我相信
dotnetpublish
只是使用
publish
目标调用
MSBuild
。因此,您应该能够通过
/p:Platform=x64

从:

在dotnet发布任务中,如果取消选择
发布Web项目
,并指定项目路径(或
***.csproj
)作为示例,该怎么办?我实际上就是这么做的。我正在运行的完整命令是:dotnet publish/x.csproj-c release--no build您可以通过在VSTS中将
system.debug
变量设置为
true
来共享详细的构建日志吗?完美。非常感谢你!随时:)。请记住,因为这只是围绕MSBuild的包装,所以如果需要,您可以传递任何MSBuild参数,这并不限于平台。