Visual Studio 2008中的BaseOutputPath bug?

6

MSDN:

BaseOutputPath: 指定输出文件的基本路径。如果设置了该属性,MSBuild 将使用 OutputPath = $(BaseOutputPath)\$(Configuration)\

我尝试使用 MSBuild 项目属性 BaseOutputPath 而不是为每个配置和平台组合指定 OutputPath,但是在编译时 Visual Studio 报错:

该项目未设置 OutputPath 属性。请确保您已指定有效的 Configuration/Platform 组合。

我将 <BaseOutputPath>..\Binaries</BaseOutputPath> 放在第一个无条件的 <ProjectProperty> 中。

我是否使用不正确,还是这是 Visual Studio 中已知的 bug?

1个回答

7

这更可能是文档中的错误,而不是VS2008/MSBuild中的错误。

您可以通过仔细检查项目文件和它引用的Microsoft.Common.Targets文件(通常是通过Microsoft.CSharp.targets实现;这些文件位于例如

c:\Windows\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets

)来推断出您想要执行的操作,并找到最终填充OutputPath的所有MSBuild逻辑。

在这种情况下,我认为文档直接撒谎了,您应该显式地指定,例如:

<OutputPath>$(BaseOutputPath)\$(Configuration)</OutputPath>

将您的项目文件中无条件的属性(并从有条件的属性中删除OutputPath)改为,以使其起作用。

我明白了,但这样做实际上就否定了一开始使用BaseOutputPath的好处。我可以直接使用<OutputPath>..\Binaries$(Configuration)</OutputPath>。感谢您的澄清! - user65199

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接