关于vb.net:Visual Studio正在扩展包含在构建时的通配符项目文件

Visual Studio is expanding wildcard project file includes upon build

我正在使用Visual Studio 2019并正在升级.vbproj文件以使用一些更现代的功能-我认为最初的解决方案/项目可能早于VS 2008即可构建。
我正在将大量的显式文件包含转换为一个通配符以提取所有文件:

1
2
3
   <ItemGroup>
      <Compile Include="Src\\**\\*.vb" />
   </ItemGroup>

这很好用,我可以在Visual Studio的项目浏览器中看到所有文件。
但是,当我构建项目时,该通配符被扩展,并且每个源文件都被命名,如下所示:

1
2
3
4
5
   <ItemGroup>
      <Compile Include="Src\\Code\\File1.vb" />
      <Compile Include="Src\\Code\\File2.vb" />
      <Compile Include="Src\\Code2\\File1.vb" />
   </ItemGroup>

在构建项目之前不会发生这种情况,我可以毫无问题地加载Visual Studio,并且项目文件保持不变。

之所以这样做,是因为在将多个文件合并到其中的多个重构分支中合并这些文件时遇到了一些问题,因此此方法会容易得多。

我可以阻止Visual Studio执行此操作吗?


我已设法通过将项目文件升级为Visual Studio 2017/2019类型来解决此问题。以下指南非常方便:https://natemcmaster.com/blog/2017/03/09/vs2015-to-vs2017-upgrade/

  • <Project Sdk="Microsoft.NET.Sdk">替换根项目XML元素
  • 删除我在原始帖子中指定的通配符include-默认情况下,Visual Studio将此glob模式与新项目样式匹配
  • 转换了packages.config NuGet引用以使用<PackageReference>

我对结果如何感到非常满意:)


Can I prevent Visual Studio from doing this?

实际上它应该可以工作,并且可以在我身边的最新VS2019 16.4.4的C# and VB.net项目中使用。

1。我的猜测是,由于您的项目来自旧的VS2008,因此项目文件(xx.vbproj)的格式与VS2019中的新项目文件格式完全不同,因此VS2019项目系统无法很好地识别它。

PS:为此,您可以在VS2019中创建一个新的VB .net fx项目,以确认所需的内容是否适用于VB项目。另外,我建议您可以创建新的VB空项目,并将源文件移动到新项目中以进行管理。

2。另一个可能的原因可能与复制和移动文件的顺序有关。

对我来说,我创建一个新的VB项目=>在项目文件夹中创建Src文件夹=>在Src文件夹中创建Code文件夹=>在Code文件夹中创建Test1.vb和Test2.vb简单的代码。然后使用ItemGroup包含那些文件,无论在开发过程中还是在构建后,它始终可以正常工作。

(您可以检查是否使用类似的步骤,或者可以在编辑xx.vbproj之前将文件粘贴到解决方案资源管理器中?)

希望它能对您有所帮助,如果我误解了您的问题,请随时纠正我:)