解决方案的项目位于解决方案文件夹之外

Jon*_*ood 12 git github visual-studio

我试图通过选择File | 将解决方案添加到本地存储库。添加到源代码管理,但是收到以下消息。

源代码控制
-Git当前解决方案的项目位于解决方案文件夹之外。这些项目在Git存储库中将不受源代码控制。要将所有项目添加到单个Git存储库中,请将所有项目合并到一个文件夹中。

但是,我所有的项目都在我的解决方案文件夹中。我唯一不确定的是,我向我的一个项目中添加了NuGet包,但在任何地方都看不到。它在项目的csproj文件中显示如下。

<ItemGroup>
  <PackageReference Include="Microsoft.Win32.Registry" Version="4.5.0" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

有谁知道这是否可能导致此错误?我可以单击“确定”,它创建了本地存储库,但是我想将其放在GitHub上,因此我想弄清楚问题出在哪里。

另一个问题是,在向GitHub添加这样的解决方案时,我通常会包括这样的软件包吗?我期望有一个packages文件夹,但没有得到。

这是解决方案的屏幕截图:

在此处输入图片说明

这是我的解决方案文件:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28922.388
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Toxic", "Toxic\Toxic.csproj", "{DEAAC3F5-B48F-4601-ADC7-ECFE1519A841}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Toxic.Desktop", "Toxic.Desktop\Toxic.Desktop.csproj", "{A4EAA8D5-C085-4960-A871-74F68F6F9BC7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Toxic.Web",    "Toxic.Web\Toxic.Web.csproj", "{49E8312B-506E-4AC1-8524-37BB601EC889}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ToxicTests", "ToxicTests\ToxicTests.csproj", "{131B2077-A4C2-48EA-A1E1-8CA1A38097BD}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
        Release|Any CPU = Release|Any CPU
    EndGlobalSection
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {DEAAC3F5-B48F-4601-ADC7-ECFE1519A841}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {DEAAC3F5-B48F-4601-ADC7-ECFE1519A841}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {DEAAC3F5-B48F-4601-ADC7-ECFE1519A841}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {DEAAC3F5-B48F-4601-ADC7-ECFE1519A841}.Release|Any CPU.Build.0 = Release|Any CPU
        {A4EAA8D5-C085-4960-A871-74F68F6F9BC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {A4EAA8D5-C085-4960-A871-74F68F6F9BC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {A4EAA8D5-C085-4960-A871-74F68F6F9BC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {A4EAA8D5-C085-4960-A871-74F68F6F9BC7}.Release|Any CPU.Build.0 = Release|Any CPU
        {49E8312B-506E-4AC1-8524-37BB601EC889}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {49E8312B-506E-4AC1-8524-37BB601EC889}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {49E8312B-506E-4AC1-8524-37BB601EC889}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {49E8312B-506E-4AC1-8524-37BB601EC889}.Release|Any CPU.Build.0 = Release|Any CPU
        {131B2077-A4C2-48EA-A1E1-8CA1A38097BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {131B2077-A4C2-48EA-A1E1-8CA1A38097BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {131B2077-A4C2-48EA-A1E1-8CA1A38097BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {131B2077-A4C2-48EA-A1E1-8CA1A38097BD}.Release|Any CPU.Build.0 = Release|Any CPU
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
    EndGlobalSection
    GlobalSection(ExtensibilityGlobals) = postSolution
        SolutionGuid = {2076F481-A5C7-4132-874E-47767C93475D}
    EndGlobalSection
EndGlobal
Run Code Online (Sandbox Code Playgroud)

更新:

似乎每次将新项目添加到源代码管理时,我都会收到此消息。似乎从根本上来说正在发生一些事情,因为我认为我没有引用任何外部文件,并且我的解决方案文件表明了这一点。请注意,即使我收到此消息,它仍将解决方案添加到源代码管理中,并且一切似乎都正常进行。

我没有命令行GIT程序,如果没有任何方法可以查看发生了什么情况,我真的希望不安装其他任何程序。

dmc*_*gin 7

请参阅下面的更新

从解决方案文件中的Visual Studio版本号来看,我假设您使用的Visual Studio 2019是相对较新的发行版(可能是预览版)。

这些是我的观察

  1. 我正在使用Visual Studio Enterprise 16.20 (Preview 3.0),也Visual Studio Enterprise 16.1.6 (Release)

  2. 在任一版本的Visual Studio中,如果我在自定义目录下创建解决方案,就我而言,我使用c:\​​ Code \ Projects,则在尝试向源代码管理中添加新解决方案并选择与VS一起安装的Git版本。请注意,此位置下有许多解决方案和目录。

  3. 如果我使用扩展Easy Git Integration tools,在我的配置中使用Tortoise Git作为其基础Git服务,则不会收到此警告消息。

  4. 如果我确定警告消息,则所有文件都成功包含在后续的Git Commit中,并创建了一个有效的.gitignore文件。这包括使用所有有效文件成功创建并推送到GitHub。

  5. 如果我在默认的c:/ username / source / repos的Visual Studio中创建解决方案,则不会收到来自Visual Studio PreviewReleaseVisual Studio版本的警告。 请注意,此位置下没有任何其他解决方案或目录。

我建议你

a)确认父文件夹中没有git存储库;这有时会使Visual Studio感到困惑-您会发现几年前对此问题的引用。这很可能是您的问题。

b)为了省心,请从命令行使用Git。Tortoise Git还与Visual Studio集成。

如果您可以提供有关Visual Studio和Git版本,路径层次结构的更多信息,无论它是一个新的解决方案,它都可以帮助我们查明问题。

更新

我在.Net Core 2.2项目中也遇到了同样的问题,经过漫长的夜晚,我可以重现此问题。

使用MS测试项目:

a)测试项目是解决方案中唯一的项目。

b)下面显示了项目文件的内容。 测试项目文件,显示参考

c)尝试使用Add The Solution To Source ControlVisual Studio默认的Git插件,显示有关源文件树的消息:

来自Git提供者的错误消息

d)将源代码控制切换到第三方插件EZ-Git,可以轻松创建Git存储库。

EZ Git成功创建仓库

e)我从没有git集成的zip文件恢复到存档版本,并删除了单独的软件包以找出原因;结果是,当删除以下行时,Visual Studio的默认Git将成功创建存储库,而不会出现错误消息。

<PackageReference Include="MSTest.TestAdapter" Version="1.4.0" />
Run Code Online (Sandbox Code Playgroud)

f)问题似乎在于Visual Studio如何处理MSTest.TestAdaptor的dll,默认情况下将其视为Project的一部分,但它们位于c:/ Users /中的Solution文件夹结构之外。用户名/.nuget目录。

g)将ExcludeAssets添加到MSTest.TestAdaptor将删除错误消息,但是很明显,这会破坏Visual Studio Test Runner。

<PackageReference Include="MSTest.TestAdapter" Version="1.4.0">
  <ExcludeAssets>all</ExcludeAssets>
</PackageReference>
Run Code Online (Sandbox Code Playgroud)

可能可以找到IncludeAssets,ExcludeAssets和PrivateAssets的组合,以允许Visual Studio Git和Test Runner正常运行。

h)注意:上面详述的行为也适用于xUnit,即

<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
Run Code Online (Sandbox Code Playgroud)

这表明该问题与Visual Studio和Microsoft TestPlatform的依赖关系有关。

  • 我遇到了同样的问题,发现了一个相当简单的解决方法。正如dmcquiggen所指出的,这与MS测试有关。我发现,只需在签入之前卸载MS Test项目即可解决此问题,并且该测试项目仍被签入源代码管理中。然后,只需重新加载MS Test项目,它就可以正常工作。也许不包括基础测试包,但这对我来说不是问题。 (2认同)