2009-01-05 74 views
1

在C++中,您可以编译未包含在解决方案中的文件,而c#不是这种情况。如何在Visual Studio 2008中创建编译的用户文件?

有没有办法让一个文件中的一个项目,但没有标准SCCI提供商试图保持在文件中检查?

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

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

编辑我不想要么创建解决方案文件新的配置,我想这是尽可能具体的机器,没有源代码管理绑定到用户对文件/设置。

回答

1

好吧,这似乎在工作后在这里,并从字面上尝试“奇怪”的事情,我有一个想法。

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

唯一的问题是,该文件并没有在Solution Explorer中显示出来,但在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 
1

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

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

我不能得到这个工作。 – 2009-01-05 23:02:42

+0

感谢您激发我的想法:) – 2009-01-05 23:30:55

0

我正在试试这个。

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