4

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

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

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets (483,9):错误:未为项目“MyProject.msbuild”设置 OutputPath 属性。请检查以确保您为此项目指定了有效的配置和平台组合。配置='调试'平台='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 不断收到错误,我不知道还有什么可以尝试的。

请帮忙。

4

2 回答 2

10

我发现我有类似的情况(但使用 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 对我的构建脚本没有任何问题。

于 2010-12-14T07:23:29.453 回答
3

大卫的回答帮助了我。但后来我找到了我电脑问题的实际根源。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

于 2011-03-24T08:22:39.330 回答