【问题标题】:How do I create compiled user files in Visual Studio 2008?如何在 Visual Studio 2008 中创建已编译的用户文件?
【发布时间】:2009-01-05 22:48:36
【问题描述】:

在 C++ 中,您可以编译解决方案中未包含的文件,而在 c# 中则不然。

有没有办法将文件保留在项目中,但不让标准 SCCI 提供程序尝试继续签入文件?

本质上,我们想要做的是创建类似于我们在 C++ 中编写代码的“开发人员”代码能力,这允许我们让我们的开发人员使用伪代码和开发人员实用程序进行夜间签入。

#ifdef (TOM)
#include "Tom.h";
#endif

编辑我也不想在解决方案文件中创建新配置,我希望这些配置尽可能地是特定于机器的,而不需要在文件/设置上与用户进行源代码控制绑定。

【问题讨论】:

    标签: c# .net vb.net visual-studio-2008


    【解决方案1】:

    MSBuild 有Conditional Constructs。您所要做的就是修改解决方案文件以包含您想要的内容。最终结果看起来与您的示例代码非常相似。

    <When Condition=" '$(Configuration)'=='TOM' ">
      <ItemGroup>
         <Compile Include="tomCode\*.cs" />     
       </ItemGroup>
    </When>
    

    【讨论】:

    • 感谢您激发我的想法 :)
    【解决方案2】:

    好吧,似乎在处理完这里的帖子并尝试“奇怪”的事情之后,我有了一个想法。

    基本上我使用了 *.csproj.user 文件,声明了一个 UserConfig 属性,添加了一个新的常量(用于代码检查),并在 UserConfig 的条件下做了一个 ItemGroup。所有这些都属于 DEBUG 标志。

    唯一的问题是该文件没有显示在解决方案资源管理器中,但在 c++ 中它们也没有。

    我的 *.csproj.user 文件

    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        <UserConfig>Tom</UserConfig>
        <DefineConstants>DEBUG;TRACE;TOM</DefineConstants>
      </PropertyGroup>
      <ItemGroup Condition=" '$(UserConfig)' == 'Tom'">
        <Compile Include="Tom.cs" />
      </ItemGroup>
    </Project>
    

    结果代码

    #if (TOM)
                Tom t = new Tom();
    #endif
    

    【讨论】:

      【解决方案3】:

      我目前正在尝试这个。

        <ItemGroup Condition=" '$(Configuration)' == 'Tom'">
          <Compile Include="Tom.cs" />
        </ItemGroup>
      

      【讨论】:

      • *注意:这仍然需要您签入文件,但它确实适用于不编译类的#if (TOM)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-10
      • 2011-09-25
      • 1970-01-01
      • 2011-01-08
      • 2018-10-28
      相关资源
      最近更新 更多