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

时间:2019-06-09 00:11:28

标签: git visual-studio github

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

  

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

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

<ItemGroup>
  <PackageReference Include="Microsoft.Win32.Registry" Version="4.5.0" />
</ItemGroup>

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

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

以下是解决方案的屏幕截图:

enter image description here

这是我的解决方案文件:

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

更新:

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

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

5 个答案:

答案 0 :(得分:3)

请参阅下面的更新

从解决方案文件中的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服务),我会收到此警告消息。 / p>

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

  5. 如果我在Visual Studio默认值c:/ username / source / repos中创建解决方案,我会收到来自Preview或{{1 }}版本的Visual Studio。 请注意,我在此位置下没有其他解决方案或目录。

我建议你

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

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

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

更新

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

使用MS测试项目:

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

b)下面显示了项目文件的内容。 Test Project file, showing References

c)尝试使用Release即Visual Studio默认的Git插件,显示有关源文件树的消息:

Error Message from Git provider

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

EZ Git successfully creates repo

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

Add The Solution To Source Control

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

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

<PackageReference Include="MSTest.TestAdapter" Version="1.4.0" />

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

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

<PackageReference Include="MSTest.TestAdapter" Version="1.4.0">
  <ExcludeAssets>all</ExcludeAssets>
</PackageReference>

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

答案 1 :(得分:3)

对于任何在添加xUnit .Net Core测试项目后获得此权利的人,解决方案/解决方案都来自tintow关于dmcquiggin出色回答的评论:

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

答案 2 :(得分:0)

通过转到the root folder of your Git repository仔细检查命令行,然后键入:

git status

请检查您的解决方案文件是否确实出现在要添加的文件列表中。
否则,这意味着Git存储库位于一个文件夹中,而解决方案及其项目则完全位于另一路径中。

答案 3 :(得分:0)

这是我几个月前发生的(在Visual Studio 2017上)。然后解决了这个问题:

  1. 关闭Visual Studio
  2. 删除.git文件夹(默认情况下处于隐藏状态)
  3. 打开Visual Studio。将解决方案添加到源代码管理中

别忘了检查项目根文件夹中是否有任何.git文件夹。

注意:您将丢失历史数据。

答案 4 :(得分:0)

删除解决方案文件夹中的 .vs 文件夹。

这对我来说解决了。 在我的情况下,出现问题的原因可能是我已将整个“解决方案”文件夹移到了另一个位置(一个级别)。 我认为某些旧路径仍在 .vs 缓存中徘徊。 (删除此文件夹之前,请确保关闭Visual Studio。)