获取intellisense以获取中间cs文件

时间:2013-03-21 16:23:01

标签: visual-studio-2012 msbuild

我有一个XSD文件(DTD),我运行XSD工具来生成一个C#文件。我在以下两个地方修改了我的csproj的msbuild文件:

为项目组添加了特殊类型:

<ItemGroup>
   <SchemaFiles Include="Data\DeepZoomSchema.xsd">
   </SchemaFiles>
</ItemGroup>

然后在文件的底部:

<Target Name="BeforeBuild" Inputs="@(SchemaFiles)" Outputs="@(SchemaFiles->'$(IntermediateOutputPath)%(Filename).cs')">
  <XSD Language="CS" GenerateFromSchema="classes" SuppressStartupBanner="false" Namespace="DZParallelLib.Data" Sources="@(SchemaFiles)" AdditionalOptions="/out:$(IntermediateOutputPath)" />
  <ItemGroup>
    <Compile Include="@(SchemaFiles->'$(IntermediateOutputPath)%(Filename).cs')">
    </Compile>
  </ItemGroup>
</Target>

首先,这个项目现在编译得很好。所以我想我已经完成了很多困难。但是,intellisense在从不解析DeepZoomSchema.cs输出文件的意义上被打破了。

在我的理想世界中,从VS2012 IDE,我希望找到并解析.cs文件。我找到了一种方法来做到这一点,其中包括:

<ItemGroup>
  <SchemaFiles Include="Data\DeepZoomSchema.xsd">
  </SchemaFiles>
</ItemGroup>
<ItemGroup>
  <Compile Include="@(SchemaFiles->'$(IntermediateOutputPath)%(Filename).cs')">
    <Visible>False</Visible>
  </Compile>
</ItemGroup>

然后构建步骤变得更加简单:

<UsingTask TaskName="XSD" AssemblyName="Microsoft.Build.CppTasks.Common, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<Target Name="BeforeBuild" Inputs="@(SchemaFiles)" Outputs="@(SchemaFiles->'$(IntermediateOutputPath)%(Filename).cs')">
  <XSD Language="CS" GenerateFromSchema="classes" SuppressStartupBanner="false" Namespace="DZParallelLib.Data" Sources="@(SchemaFiles)" AdditionalOptions="/out:$(IntermediateOutputPath)" />
</Target>

现在IDE已正确解析(解决方案仍在构建),但感觉不对。当我过去编写MS构建规则时(我承认,我没有做很多)我总是将中间输出文件放在构建规则中(正如我之前所做的那样)。此外,感觉我应该在这里使用“DependentUpon”标签,并使它们可见,只是在IDE中默认不显示(有点像代码隐藏文件??)。基本上,第一个解决方案感觉它是“正确的”方式,但IDE不喜欢它。

所以,我的问题是:有没有比我描述的第二种解决方案更好的方法来获得我想做的事情?

0 个答案:

没有答案