我的 Visual Studio 似乎默认包含文件,我同事的 Visual Studio 似乎默认排除文件

问题描述 投票:0回答:1

对这里两台机器/人之间的 VS 行为差异感到困惑。当我打开一个脱离源代码管理的项目时,我看到这个:

enter image description here

当他们在计算机上打开完全相同的字节相同的 sln/csproj 时,他们会看到以下内容:

enter image description here

不包含任何内容,编译失败并显示“不包含静态 Main”等。 proj 文件是相同的,从同一个提交的同一个存储库中克隆出来

csproj 文件如下所示:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <RootNamespace>XXX_XxxxxXxxxxxxx</RootNamespace>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="ClosedXML" Version="0.102.2" />
    <PackageReference Include="Flurl" Version="4.0.0" />
    <PackageReference Include="Flurl.Http" Version="4.0.2" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
  </ItemGroup>

</Project>

如果我右键单击 Program.cs 并选择“排除”,这就是存储库上的差异:

enter image description here

如果我的同事右键单击并包含幻影文件,这就是存储库上的差异:

enter image description here

我描述它的最好方式是我的似乎包含任何文件,除非我特别排除,而他们的文件只会包含项目中的文件(如果它们被特别提名包含)

是否有一个“在 VS 级别”设置来控制文件包含等内容,这可以解释为什么两个 VS 的工作方式如此不同?两个VS都是2022年最新的..

我看不到项目文件中提到的任何“DefaultItemExcludes”(参见此处:如何从 .NET Core/Standard 项目中排除文件/文件夹?);可以在 VS 中的其他地方设置默认排除吗?

visual-studio visual-studio-2022
1个回答
0
投票

我了解您目前的困境,但您的具体要求还不清楚。您的询问与MSBuild有关,并且您提到的csproj文件确实是MSBuild的组件。 MSBuild 在 Visual Studio 项目中生成各个文件。典型的情况是找不到DefaultItemExcludes;您必须按照您查阅的教程手动将其插入到 csproj 文件中。如果您仍然无法解决问题并准确表达您的需求,我也许可以帮助您。或者,您可以选择自学。

此外,您同事的项目被排除在编译之外的原因是由于项目文件在 csproj 文件中被设置为“None”。在 MSBuild 中,标记为“None”的项目是项目项目的一个独特类别,表示项目内的文件。但是,这些文件既未编译也未链接到最终输出。通常,“无”项包括资源文件、配置文件、脚本文件以及支持项目但不需要编译为可执行文件或库文件的类似文件。 https://learn.microsoft.com/en-us/visualstudio/msbuild/msbuild?view=vs-2022

© www.soinside.com 2019 - 2024. All rights reserved.