我已经制作了一个MSBuild项目,它只使用我们的解决方案文件作为参数执行msbuild任务。我已经定义了一个BeforeBuild目标,我设置了一些属性,以及一个执行msbuild任务的Build目标。
我已经确认在命令行控制台中构建msbuild脚本时没有发生错误。但是,当我在CCNET项目的msbuild任务中使用它时,我不断收到以下错误:
C:\的Windows \ Microsoft.NET \框架\ 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会一直收到错误,我不知道还有什么可以尝试。
请帮忙。
答案 0 :(得分: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对我的构建脚本没有任何问题。
答案 1 :(得分:3)
大卫的回答帮助了我。但后来我发现了计算机问题的实际来源。 PLATFORM 环境变量已添加到HP计算机上,并且确实会影响Visual Studio中的许多不同方案。
进入环境变量 - &gt;系统变量并从列表中删除“PLATFORM”。