只有在 CCNET 中调用 MSBuild 时才会出现“OutputPath 属性未设置”错误

Posted

技术标签:

【中文标题】只有在 CCNET 中调用 MSBuild 时才会出现“OutputPath 属性未设置”错误【英文标题】:"OutputPath property is not set" error occurs only when calling MSBuild in CCNET 【发布时间】:2010-06-03 10:09:32 【问题描述】:

我创建了一个 MSBuild 项目,它只是使用我们的解决方案文件作为参数执行 msbuild 任务。我已经定义了一个 BeforeBuild 目标,我在其中设置了一些属性,以及一个执行 msbuild 任务的 Build 目标。

我已经确认在命令行控制台中构建 msbuild 脚本时没有发生错误。但是,当我在 CCNET 项目的 msbuild 任务中使用它时,我不断收到以下错误:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets (483,9):错误:OutputPath 没有为项目设置属性 'MyProject.msbuild'。请检查 确保您指定了一个 配置的有效组合和 该项目的平台。 配置='调试' 平台='AnyCPU'。你可能会看到 这条消息是因为你试图 建立一个没有解决方案的项目 文件,并指定了一个非默认值 没有的配置或平台 此项目存在。

我检查了构建日志,似乎在 _CheckForInvalidConfigurationAndPlatform 期间发生了错误。它甚至无法继续我的构建任务!由于该脚本仅用于在 Debug/Release 和 AnyCPU 作为平台下构建解决方案,因此我尝试将以下行添加到我的 msbuild 项目中:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' ==  'Debug|AnyCPU' ">
  <OutputPath>.\bin\Debug\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' ==  'Release|AnyCPU' ">
  <OutputPath>.\bin\Release\</OutputPath>
</PropertyGroup>

我仍然可以在命令行中构建项目而不会出现错误,但 CCNET 返回上述相同的错误。

我不明白为什么 CCNET 不断收到错误消息,我不知道还能尝试什么。

请帮忙。

【问题讨论】:

这有帮助吗? blogs.msdn.com/b/brandonwerner/archive/2010/03/14/… 你能发布在CC.NET中使用的msbuild任务吗? 【参考方案1】:

我发现我有类似的情况(但使用 TeamCity 作为我的 CI 环境)。在我的特殊情况下,该项目是一个命令行应用程序。为了解决这个问题,我不得不手动编辑我的项目文件。

找到这些行:

<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>

将第二行改为:

<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

在项目文件中找到其他特定于平台的行并更改它们。示例:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">

变成:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

我怀疑我们的构建服务器是 64 位的,Studio 中的控制台应用程序项目类型不会让您使项目适合 AnyCPU 平台...

在这些更改之后,TeamCity 对我的构建脚本没有任何问题。

【讨论】:

这正是我所需要的。如果没有这个答案,我非常怀疑我是否能够追查到这一点。 如果其他人遇到这个,第一行属于初始属性组,在我的情况下,平台行完全丢失。添加它解决了 TeamCity 的问题【参考方案2】:

大卫的回答帮助了我。但后来我找到了我电脑问题的实际根源。 PLATFORM 环境变量已添加到 HP 计算机上,并且确实会影响 Visual Studio 的许多不同场景。

进入环境变量->系统变量并从列表中删除“平台”。

在此处查看更多详细信息:http://blogs.msdn.com/b/jnak/archive/2010/03/24/outputpath-property-is-not-set-for-project-error-when-building-a-windows-azure-cloud-service-in-vs-2010.aspx

【讨论】:

感谢您提供更多信息。那一定是一个真正的问题要解决! 在我的情况下,它实际上只是在平台上放置更多属性组,有时人们对其进行自定义(输入另一个名称,如 MyAcceptance),然后巡航控制会触发此错误。所以你还必须将此名称添加到 csproj 的源代码中

以上是关于只有在 CCNET 中调用 MSBuild 时才会出现“OutputPath 属性未设置”错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Web 服务中返回列表时,只有在返回值时才会出现错误?

iPhone 应用程序只有在 3GS 用户在 iTunes 中升级时才会出现问题?

Erlang在socket中接受连接只有在有多层进程时才会失败

在我的 Flutter 应用中,只有当我们触摸屏幕时才会加载页面内容。为啥?

只有在 Visual Studio 之外运行 EXE 时才会出现发布错误

不显示视频,只有在 react-native-video 中播放真正的 android 设备时才会发出声音