.net Framework csproj 在文件删除后重新生成

.net Framework csproj regenerates after file deletion

提问人:Maor Arnon 提问时间:11/12/2023 最后编辑:marc_sMaor Arnon 更新时间:11/12/2023 访问量:79

问:

我正在尝试更改我的 .NET Framework 项目以包含具有以下规则的所有文件:

<ItemGroup>
    <Compile Include="**\*.cs"/>
    <Compile Remove="bin\**\*;obj\**\*"/>
</ItemGroup>

每次我将文件添加到项目中时,它都会正确构建(并且不会修改),同时将所有文件包含在构建中,但是当我从项目中删除文件时,它会重新生成文件以分别包含每个文件并删除以下行:.csproj.csproj

<Compile Include="**\*.cs"/>

如何确保即使我从项目中删除文件也保持不变?.csproj

我希望文件保持不变,以防止在合并并行开发的分支时发生 git 冲突。.csproj

编辑:我无法共享整个项目,所以我在一个新项目上复制了这个问题。

这是文件 - https://github.com/gavrielor/CSProjTest/blob/main/CSProjTestClassLibrary/CSProjTestClassLibrary.csproj.csproj

这就是整个项目:https://github.com/gavrielor/CSProjTest/tree/main

如果您删除 和 中的一个类文件,则构建/重建该文件将复制我上面提到的错误。CSProjTestClassLibrary.csproj

C# git visual-studio csproj net-4.8

评论

0赞 Dai 11/12/2023
您使用的是 SDK 样式的 csproj 还是经典样式的 csproj?
0赞 Maor Arnon 11/12/2023
@Dai我使用的是经典风格的 csproj
0赞 shingo 11/12/2023
您是如何删除文件的?你能展示csproj吗?
0赞 Maor Arnon 11/12/2023
@shingo,我直接从 VS 的解决方案资源管理器中删除了该文件。我将源文件添加到主帖子中
1赞 TTT 11/13/2023
“但是当我从项目中删除文件时”。从技术上讲,从文件系统中“删除”文件,并从项目中“删除”文件。如果仅将其从项目中删除,则项目知道这一点的唯一方法是列出要包含的每个文件。也许如果你同时做这两件事,那就太乱了。也许如果你只从文件系统中删除文件,它会自动从项目中消失。不过,如果您必须卸载并重新加载项目才能反映出来,我不会感到惊讶。(只是猜测。

答:

0赞 PMF 11/12/2023 #1

您可能不需要第二行,因为 和 文件夹都不包含 .cs 文件。我假设这个复杂的术语以某种方式混淆了 Visual Studio。binobj

然后(至少如果您使用 SDK 样式的项目文件),您可以删除整个块,因为递归包含所有 .cs 文件是默认设置,除非在该部分中显式禁用默认包含。<PropertyGroup>

评论

0赞 Maor Arnon 11/12/2023
我尝试了这两种解决方案,但都没有帮助。创建类后,重新生成,删除类并再次重新生成,csproj 将分别包含所有文件。
0赞 PMF 11/12/2023
奇怪,你能编辑你的问题并包含整个 .csproj 文件吗?我假设其他部分在这里起作用。
0赞 Maor Arnon 11/12/2023
我将源文件添加到主帖子中
0赞 PMF 11/12/2023
@MaorArnon 那么我强烈建议先将项目升级到 SDK 风格。旧格式并不真正支持通配符包含(或者至少它从未以这种方式使用过),因此 VS 不使用它。