只有在 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 属性未设置”错误的主要内容,如果未能解决你的问题,请参考以下文章
iPhone 应用程序只有在 3GS 用户在 iTunes 中升级时才会出现问题?
Erlang在socket中接受连接只有在有多层进程时才会失败
在我的 Flutter 应用中,只有当我们触摸屏幕时才会加载页面内容。为啥?