Visual Studio 2017:在类库项目中嵌套文件

时间:2019-04-21 00:24:58

标签: visual-studio msbuild visual-studio-2017

在Web项目中,您可以选择嵌套文件

 + startup.cs
   +--startup.internals.cs
   +--startup.configuration.cs

在类库项目中还有什么方法可以实现相同的行为吗?

更新:已部分解决

确定,

您需要了解文件路径。

对于这样的结构(文件处于项目级别)

+-- myProject.csproj
   +-- startup.cs
   +-- startup.internals.cs
   +-- startup.configuration.cs

这就是您要寻找的配置。

  <ItemGroup>
    <Compile Update="startup.*.cs">
      <DependentUpon>startup.cs</DependentUpon>
    </Compile>
  </ItemGroup>

对于嵌套文件夹结构

+-- myProject.csproject
   +-- Folder_A
      +-- Folder_A1
         +-- startup.cs
         +-- startup.internals.cs
         +-- startup.configuration.cs

您需要使用buildin $ {ProjectDir)宏来掌握项目路径

  <ItemGroup>
    <Compile Update=" $(ProjectDir)\Folder_A\Folder_A1\startup.*.cs">
      <DependentUpon> $(ProjectDir)\Folder_A\Folder_A1\startup.cs</DependentUpon>
    </Compile>
  </ItemGroup>

为什么我说它部分起作用,因为如果我退出Visual然后再次打开它,对于第二种类型的结构,它将取消嵌套文件的操作。

有人帮助吗?

2 个答案:

答案 0 :(得分:2)

我相信您可以在csproj文件中执行此操作。

<Compile Include="startup.cs">
    <DependentUpon>startup.internals.xaml</DependentUpon>
    <DependentUpon>startup.configureation.xaml</DependentUpon>
</Compile>

答案 1 :(得分:1)

  

要回答您的更新:

类似于this issue的事物。 DependentUpon是行为的正确元数据。

但是此元数据不支持路径,它必须是文件名,并且必须在同一文件夹下。因此,您使用的ItemGroup的内容应类似于:

    <Compile Include="Folder_A\Folder_A1\startup.cs" />
    <Compile Include="Folder_A\Folder_A1\startup.configuration.cs">
      <DependentUpon>startup.cs</DependentUpon>
    </Compile>
    <Compile Include="Folder_A\Folder_A1\startup.internals.cs">
      <DependentUpon>startup.cs</DependentUpon>
    </Compile>

经过检查,我认为如果使用.net fx类库项目,则需要使用“包含”元素而不是“更新”。

更新: (Update元素仅适用于根据this doc的.net核心项目。)

如果在.net核心项目中(如MCR测试的那样),也许Update更合适。