c# *.csproj文件里的UseVSHostingProcess在VS2005的哪里设置?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# *.csproj文件里的UseVSHostingProcess在VS2005的哪里设置?相关的知识,希望对你有一定的参考价值。

请问c#中的*.csproj文件里的UseVSHostingProcess在VS2005的哪里设置?
我在项目属性里看过了,都还是找不到,最好详细指明是哪一项的设置.

参考技术A 右键你的项目属性,在生成下面有checkbox

条件编译在 C# 中的行为不正确

【中文标题】条件编译在 C# 中的行为不正确【英文标题】:Conditional Compilation not behaving correctly in C# 【发布时间】:2013-08-24 06:18:22 【问题描述】:

我在使用条件编译的标准 WinForms 应用程序中遇到问题

我有 2 个引用同一个 Program.cs 文件的 .csproj(它们也位于磁盘上的同一个文件夹中)

在 Project1.csproj 中,我定义了一个名为 CONDITION_1 的条件编译符号

在 Project2.csproj 中,我定义了一个名为 CONDITION_2 的条件编译符号

static void Main()

  #if CONDITION_1
    DoSomething();
  #elif CONDITION_2
    DoSomethingElse();
  #else
    DoAnotherThing();
  #endif
    ContinueDoingStuff();

这些符号定义为“所有配置”的项目设置。 在我的调试环境中,一切正常。但是,当我重新检查源代码并在我的构建机器上构建时,我在反编译器中打开 Project2.exe,我注意到我的源代码是这样的 p>

static void Main()

    DoAnotherThing();
    ContinueDoingStuff();

如果我在 Visual Studio 中打开解决方案文件并执行常规构建(不清理、不重建、不更改代码)

我打开 exe 并注意到 Project2.exe 的正确反编译源...

static void Main()

    DoSomethingElse();
    ContinueDoingStuff();

有什么想法吗?是否有可能在编译时没有正确设置条件符号?

【问题讨论】:

您可能忘记为发布配置设置这些条件。 条件设置为“所有配置”。这包括“发布”。但是我仔细检查了 .csproj 并定义了符号。此外,如果没有设置它们,那仍然无法解释简单构建(在发布模式下)创建正确编译的 exe 的行为。 你能用一个简单的项目重现这种行为并上传到某个地方让我们看看吗? 当我手动检查 .csproj 时,我注意到符号不是为 Release|AnyCPU 定义的,而是为 Release|x86 定义的。所以我猜当你为“所有配置”设置符号时,它也不意味着“所有平台”。很高兴我找到了! 【参考方案1】:

好的,好的。我想到了。我觉得有点傻,但同时也很容易错过。

这是我的 .csproj 的摘录

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<ResGenToolArchitecture>Managed32Bit</ResGenToolArchitecture>
<OutputPath>..\BinPC\Release\</OutputPath>
<DefineConstants>CONDITION_2</DefineConstants>
<Optimize>false</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>

这里是 Release|AnyCPU

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<ResGenToolArchitecture>Managed32Bit</ResGenToolArchitecture>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\BinPC\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>

在 Visual Studio 中,我为 x86 目标平台设置了 CONDITION_2,但没有设置 AnyCPU。 both .csproj 都是如此。但是,第一个 csproj 默认是在 Release|x86 模式下构建的,第二个是在 Release|AnyCPU 中构建的(没有如上所示定义的符号)

长话短说,吸取教训。始终检查项目中的符号定义。

    右键单击 .csproj 文件,单击属性。 在 build 标签中,选择 All ConfigurationsAll Platforms( 现在定义条件编译符号,它将为所有配置设置

【讨论】:

以上是关于c# *.csproj文件里的UseVSHostingProcess在VS2005的哪里设置?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中快速处理 csproj 文件

C#解决方案生成工具

C# 2008 Express:此版本的应用程序不支持项目类型 (.csproj)

c# 源文件

扩展名:csproj

csproj 文件中的“服务包含”有啥用?