繁体   English   中英

在解决方案资源管理器中包含文件,而无需依赖构建

[英]Include file in solution explorer without it being a build dependency

如何在解决方案资源管理器的文件列表中包括文件,而又不将其作为编译依赖项呢?

我有一个.targets文件生成.cs文件,类似于此答案中的示例

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <CoreCompileDependsOn>$(CoreCompileDependsOn);GenerateCode</CoreCompileDependsOn>
  </PropertyGroup>

  <ItemGroup>
    <Sources Include="..\sources\*.txt" />
  </ItemGroup>

  <Target Name="GenerateCode" Inputs="@(Sources)" Outputs="@(Sources->'generated\%(Filename).cs')">
    <!-- run executable that generates files -->
    <ItemGroup>
      <Compile Include="generated\*.cs" />
    </ItemGroup>   
  </Target>
</Project>

这样可以正确构建,并且连续构建不会不必要地重建项目。 生成的.cs文件在解决方案资源管理器中不可见。 智能感知也找不到生成的代码。

如果我在.csproj中添加具有ItemGroup的文件,则生成的文件在解决方案资源管理器中可见,但是后续的构建会导致不必要地重建项目。 智能感知仍未找到生成的代码。

  <ItemGroup>
    <Sources Include="..\sources\*.txt">
      <Link>sources\%(Filename)%(Extension)</Link>
    </Sources>
    <!-- using None instead of Compile on the next line makes no difference -->
    <Compile Include="@(Sources->'generated\%(Filename).cs')">
      <Generator>MSBuild:Compile</Generator>
      <Link></Link>
    </Compile>
  </ItemGroup>

我怎么能告诉msbuild项目中包含的.cs文件与构建无关紧要,因此不应该触发重建整个项目吗?

将代码生成移至BeforeCompile而不是CoreCompileDependsOn 这样可以防止文件生成干扰后续的构建。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="BeforeCompile" DependsOnTargets="GenerateCode">        
  </Target>

  <Target Name="GenerateCode" Inputs="@(Sources)" Outputs="@(Sources->'generated\%(Filename).cs')">
    <!-- run executable that generates files -->
  </Target>
</Project>

如果将所有生成的文件包括在.csproj中,则Visual Studio intellisense将起作用。

  <ItemGroup>
    <Sources Include="..\sources\*.txt">
      <Link>sources\%(Filename)%(Extension)</Link>
      <LastGenOutput>generated\%(Filename).cs</LastGenOutput>
    </Sources >
    <Compile Include="@(Sources->'generated\%(Filename).cs')">
      <Link></Link>
    </Compile>
  </ItemGroup>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM