【问题标题】:Visual studio 2017 : nesting files in a class library projectVisual Studio 2017:在类库项目中嵌套文件
【发布时间】:2019-04-21 00:24:57
【问题描述】:

在 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

您需要使用内置 $(ProjectDir) 宏获取项目路径

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

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

有些人可以帮助任何人?

【问题讨论】:

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


    【解决方案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 类库项目,我认为您需要使用 Include 属性而不是 Update

    更新: 根据this docUpdate 属性仅适用于 .NET Core 项目。

    如果在 .NET Core 项目中,就像您在评论中指出的那样,Update 可能更合适:

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

    【讨论】:

    • 不确定,但由于某种原因,它不适用于 .NET 核心,除非我使用的是 Update .. &lt;ItemGroup&gt; &lt;Compile Update="Folder_A\Folder_A1\startup.*.cs"&gt; &lt;DependentUpon&gt;startup.cs&lt;/DependentUpon&gt; &lt;/Compile&gt; &lt;/ItemGroup&gt;。还是最喜欢的答案。谢谢你的建议:)
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-10-10
      • 1970-01-01
      • 2019-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多