为Intellisense添加文件到Project但不编译

时间:2015-03-09 19:46:54

标签: c# visual-studio-2013

我正在开发一个项目,我们有一个构建工具,可以在构建过程中自动生成源文件并将其编译进去。但是,这个设置使我们在处理这些生成时无法获得智能感知或任何自动完成功能。类。我想知道是否有一种方法可以将这些文件作为智能感知引用包含在内而不实际编译它们。

我们的想法是,我们可以将生成的源复制到目标文件夹,作为构建任务的一部分,然后可以将其用于自动完成,而不会破坏我们的系统。我知道我可以自动包含此文件夹的所有内容,但将Build Action设置为None并不会提供任何自动完成功能。

我们正在使用Visual Studio 2013。

3 个答案:

答案 0 :(得分:3)

因此,在我的同事的帮助下,我们找到了解决这个问题的非常有效的方法。

基本上,MSBuild使用<CompileDependsOn>来确定从何处获取智能感知。 <CompileDependsOn>提供了以分号分隔的目标列表,可将文件添加到<Compile>

对于我们的情况,对于需要intellisense的项目,我们在项目中添加了以下行。

<PropertyGroup>
  <CompileDependsOn>
    customTarget;$(CompileDependsOn)
  </CompileDependsOn>
</PropertyGroup>

customTarget是将生成的文件添加到<Compile>

的目标

答案 1 :(得分:0)

我猜你可以创建一个新项目,在Configuration Manager中选择不构建的项目。

问题是您必须参考该项目。您可以通过将结果替换为已经完成的操作来解决此问题,例如具有“复制到输出文件夹”设置的文件。

答案 2 :(得分:0)

在项目csproj文件中添加以下行。

<ItemGroup>
    <Content Include="<file path respective of your project>" />
<ItemGroup>

示例:

<ItemGroup>
        <Content Include="Common\Constants.cs" />
<ItemGroup>