【问题标题】:VisualStudio ignores last folder in csprojVisualStudio 忽略 csproj 中的最后一个文件夹
【发布时间】:2025-11-23 07:30:02
【问题描述】:

为什么在 $(FileName) 之前的最后一个文件夹,例如显示文件时 Visual Studio 完全忽略“MSBuild 删除的虚拟对象”?

  <ItemGroup>
    <!-- Protobuf files for ReSharper -->
    <Content Include="$(SolutionDir)packages\Google.Protobuf.Tools.*\tools\google\protobuf\**\*.proto">
      <Link>google\protobuf\dummy removed by MSBuild\$(FileName)</Link>
    </Content>
  </ItemGroup>

【问题讨论】:

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


    【解决方案1】:

    为什么在 $(FileName) 之前的最后一个文件夹,例如显示文件时,Visual Studio 完全忽略“MSBuild 删除的虚拟对象”?

    大胆猜测,你想使用$(FileName) 来获取那些.proto 文件的文件名。

    为此,您应该使用%(Content.Filename) 而不是$(FileName),因此代码如下所示:

      <ItemGroup>
        <Content Include="$(SolutionDir)packages\Google.Protobuf.Tools.*\tools\google\protobuf\**\*.proto">
          <Link>google\protobuf\dummy removed by MSBuild\%(Content.Filename)</Link>
        </Content>
      </ItemGroup>
    

    使用上面的代码,那些.proto 文件会显示在解决方案资源管理器中的dummy removed by MSBuild 文件夹下:

    希望这会有所帮助。

    【讨论】:

      最近更新 更多