9

我需要根据项目的配置将 C# 项目构建为 WinExe 或库。

我试过这两种方法都没有运气:

1) 在一般的 PropertyGroup 中:

<OutputType Condition=" '$(Configuration)' == 'Release' ">WinExe</OutputType> <OutputType Condition=" '$(Configuration)' == 'Debug' ">Library</OutputType>

2) 在有条件的 PropertyGroup 中:

<PropertyGroup Condition=" '$(Configuration)' == 'Release' "> <OutputType>WinExe</OutputType> </PropertyGroup>

<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> <OutputType>Library</OutputType> </PropertyGroup>

这些方法都不起作用,并且 OutputType 始终是 WinExe。奇怪的是,如果我将 WinExe 的所有实例更改为 Library,那么它始终是 Library。这让我觉得它正在成功地阅读它们,但要么以奇怪的顺序,要么 WinExe 优先于库。

有任何想法吗?

4

1 回答 1

15

在 .csproj 文件的顶部,您将有两个部分看起来有点像这样:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
  <OutputType>Library</OutputType>
  <!-- Other properties go here -->
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
  <OutputType>Exe</OutputType>
  <!-- Other properties go here -->
</PropertyGroup>

将您的OutputType元素添加到这两个条件PropertyGroup部分,并确保删除所有其他OutputType元素 - 我刚刚对其进行了测试,它完全符合您的要求。

是的,这与您已经完成的非常相似,但我知道上述方法有效,因为我刚刚尝试过 - 我唯一的猜测是您构建中的其他地方正在搞砸事情。

于 2011-07-28T22:42:10.043 回答