Visual Studio 正在扩展构建时包含的通配符项目文件
Visual Studio is expanding wildcard project file includes upon build
我正在使用 Visual Studio 2019 并且正在升级 .vbproj 文件以使用一些更现代的功能 - 我认为最初的 solution/project 可能早在 VS 2008 就已构建。
我正在将大量显式文件包含转换为一个通配符以提取我的所有文件:
<ItemGroup>
<Compile Include="Src\**\*.vb" />
</ItemGroup>
效果很好,我可以在 Visual Studio 的项目浏览器中看到所有文件。
然而,当我构建项目时,这个通配符被展开并且每个源文件都被命名,如下所示:
<ItemGroup>
<Compile Include="Src\Code\File1.vb" />
<Compile Include="Src\Code\File2.vb" />
<Compile Include="Src\Code2\File1.vb" />
</ItemGroup>
在我构建项目之前不会发生这种情况,我可以毫无问题地加载 Visual Studio 并且项目文件保持不变。
我这样做是因为在一些重构分支中合并这些文件时遇到了一些问题,其中许多文件被删除,所以这种方法会容易得多。
我可以阻止 Visual Studio 这样做吗?
Can I prevent Visual Studio from doing this?
实际上它应该可以工作,并且它确实可以与我这边的 C# and VB.net
个项目一起使用最新的 VS2019 16.4.4。
1.My猜测是因为你的项目来自旧的VS2008,所以你的项目文件格式(xx.vbproj)与VS2019的新项目文件格式有很大不同,所以VS2019项目系统可以认得好。
PS:为此,您可以在 VS2019 中创建一个新的 VB .net fx
项目,以确认您想要的内容是否适用于 VB 项目。此外,我建议您可以创建新的 VB 空项目,并将源文件移动到新项目中以进行管理。
2.Another 可能的原因可能与文件复制和移动的顺序有关。
对我来说,我创建了一个新的 VB 项目=>在项目文件夹中创建 Src
文件夹=>在 Src
文件夹中创建 Code
文件夹=>在 Code
文件夹用简单的代码创建Test1.vb和Test2.vb。然后使用 ItemGroup
来包含这些文件,无论是在开发期间还是构建之后,它都可以正常工作。
(您可以检查是否使用了类似的步骤,或者您可以在编辑 xx.vbproj 之前将文件粘贴到解决方案资源管理器中?)
希望对您有所帮助,如果我误解了您的问题,请随时纠正我:)
我已设法通过将项目文件升级为 Visual Studio 2017/2019 类型来解决此问题。以下指南非常方便:https://natemcmaster.com/blog/2017/03/09/vs2015-to-vs2017-upgrade/
- 用
<Project Sdk="Microsoft.NET.Sdk">
替换根项目 XML 元素
- 删除我在原始文件中指定的通配符 include post -- Visual Studio 默认将此 glob 模式与新项目样式匹配
- 转换 packages.config NuGet 引用以使用
<PackageReference>
s
我对结果很满意 :)
我正在使用 Visual Studio 2019 并且正在升级 .vbproj 文件以使用一些更现代的功能 - 我认为最初的 solution/project 可能早在 VS 2008 就已构建。 我正在将大量显式文件包含转换为一个通配符以提取我的所有文件:
<ItemGroup>
<Compile Include="Src\**\*.vb" />
</ItemGroup>
效果很好,我可以在 Visual Studio 的项目浏览器中看到所有文件。 然而,当我构建项目时,这个通配符被展开并且每个源文件都被命名,如下所示:
<ItemGroup>
<Compile Include="Src\Code\File1.vb" />
<Compile Include="Src\Code\File2.vb" />
<Compile Include="Src\Code2\File1.vb" />
</ItemGroup>
在我构建项目之前不会发生这种情况,我可以毫无问题地加载 Visual Studio 并且项目文件保持不变。
我这样做是因为在一些重构分支中合并这些文件时遇到了一些问题,其中许多文件被删除,所以这种方法会容易得多。
我可以阻止 Visual Studio 这样做吗?
Can I prevent Visual Studio from doing this?
实际上它应该可以工作,并且它确实可以与我这边的 C# and VB.net
个项目一起使用最新的 VS2019 16.4.4。
1.My猜测是因为你的项目来自旧的VS2008,所以你的项目文件格式(xx.vbproj)与VS2019的新项目文件格式有很大不同,所以VS2019项目系统可以认得好。
PS:为此,您可以在 VS2019 中创建一个新的 VB .net fx
项目,以确认您想要的内容是否适用于 VB 项目。此外,我建议您可以创建新的 VB 空项目,并将源文件移动到新项目中以进行管理。
2.Another 可能的原因可能与文件复制和移动的顺序有关。
对我来说,我创建了一个新的 VB 项目=>在项目文件夹中创建 Src
文件夹=>在 Src
文件夹中创建 Code
文件夹=>在 Code
文件夹用简单的代码创建Test1.vb和Test2.vb。然后使用 ItemGroup
来包含这些文件,无论是在开发期间还是构建之后,它都可以正常工作。
(您可以检查是否使用了类似的步骤,或者您可以在编辑 xx.vbproj 之前将文件粘贴到解决方案资源管理器中?)
希望对您有所帮助,如果我误解了您的问题,请随时纠正我:)
我已设法通过将项目文件升级为 Visual Studio 2017/2019 类型来解决此问题。以下指南非常方便:https://natemcmaster.com/blog/2017/03/09/vs2015-to-vs2017-upgrade/
- 用
<Project Sdk="Microsoft.NET.Sdk">
替换根项目 XML 元素
- 删除我在原始文件中指定的通配符 include post -- Visual Studio 默认将此 glob 模式与新项目样式匹配
- 转换 packages.config NuGet 引用以使用
<PackageReference>
s
我对结果很满意 :)