Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据项目配置更改csproj输出类型_C#_Visual Studio_Msbuild_Csproj - Fatal编程技术网

C# 根据项目配置更改csproj输出类型

C# 根据项目配置更改csproj输出类型,c#,visual-studio,msbuild,csproj,C#,Visual Studio,Msbuild,Csproj,我需要根据项目的配置将C#项目构建为WinExe或Library 我尝试了这两种方法,但都没有成功: 1) 在常规属性组中: WinExe 图书馆 2) 在条件属性组中: 温克斯 图书馆 这两种方法都不起作用,输出类型始终为WinExe。奇怪的是,如果我将WinExe的所有实例都更改为Library,那么它总是Library。这让我觉得它正在成功地阅读它们,但不是以一种奇怪的顺序,就是WinExe优先于Library 有什么想法吗?在.csproj文件的顶部,有两个部分看起来有点像这样:

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

我尝试了这两种方法,但都没有成功:

1) 在常规属性组中:

WinExe
图书馆

2) 在条件属性组中:


温克斯


图书馆

这两种方法都不起作用,输出类型始终为WinExe。奇怪的是,如果我将WinExe的所有实例都更改为Library,那么它总是Library。这让我觉得它正在成功地阅读它们,但不是以一种奇怪的顺序,就是WinExe优先于Library


有什么想法吗?

在.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>

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


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

只要您的OutputType声明出现在任何其他声明之后,从而覆盖它,您上面的方法就应该有效。但是它也需要在包含基于$(OutputType)值的进一步属性的任何导入语句之前。您希望它在VS中工作还是只在命令行中工作?啊,我们所做的似乎工作正常。VisualStudio只是错误地报告了它,但它实际上构建了正确的输出类型。