git - 解决方案具有位于解决方案文件夹之外的项目

标签 git visual-studio github

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

Source Control - Git
The current solution has projects that are located outside the solution folder.These projects will not be source controlled in Git repository.To add all the projects to a single Git repository please consolidate all projects under a single folder.

但是,我的所有项目都在我的解决方案文件夹中。我唯一不确定的是我将 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

更新:

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

我没有命令行 GIT 程序,如果没有它,我真的不想安装任何其他东西。

最佳答案

请参阅下面的更新

根据解决方案文件中的 Visual Studio 版本号,我假设您使用的是 Visual Studio 2019,这是一个相对较新的版本(可能是预览版)。

这些是我的观察:

  1. 我正在使用 Visual Studio Enterprise 16.20(预览版 3.0),以及 Visual Studio Enterprise 16.1.6(发布版)

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

  3. 如果我使用扩展名 Easy Git Integration tools ,在我的配置中使用 Tortoise Git作为其底层 Git 服务,我没有收到此警告消息。

  4. 如果我确定警告消息,则所有文件都会成功包含在后续的 Git 提交中,并且会创建一个有效的 .gitignore 文件。这包括成功创建和推送到 GitHub,以及所有有效文件。

  5. 如果我在 Visual Studio 默认的 c:/username/source/repos 中创建解决方案,我不会收到来自 Preview发布 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) 尝试将解决方案添加到源代码管理,即 Visual Studio 默认 Git 插件,显示有关源文件树的消息:

Error Message from Git provider

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

EZ Git successfully creates repo

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

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

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

g) 将 ExcludeAssets 添加到 MSTest.TestAdaptor 将删除错误消息,但很明显,它会破坏 Visual Studio 测试运行程序。

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

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

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

<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />

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

关于git - 解决方案具有位于解决方案文件夹之外的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56511032/

相关文章:

sql-server - 为什么 Visual Studio 中的 SQL Server 对象资源管理器如此慢?

heroku - Play 应用程序 - Heroku 中的推送被拒绝

java - 将 GitHub 存储库文件导出到可用的 JAR 可执行文件,问题

git - 如何查看树冲突 ("deleted by us"或 "deleted by them"中的更改?

git 错误 : "fatal: not a valid revision"

python - 在 GitPython 中迭代提交 b/w 2 指定的提交

c# - #if DEBUG 在连接外部调试器时执行?

c# - 列出所有容器和 blob

xcode - 将 pod 文件和应用程序扩展推送到 Github 的问题

Git Push 无权访问 VSTS 远程 : TF401019