如何从包含许多示例的教程存储库构建代码(在 Visual Studio/C# 中)

How do I build code out of a tutorial repo that has many examples (in Visual Studio/C#)

如何从 class 或 Visual Studio 中的教程构建示例代码,将其拆分到存储库中的文件夹中?

所以 - 我在 C# 方面几乎是个菜鸟,我浏览了很多教程,浏览了一些大型的 C# 项目并构建了它们,还做了一些其他的小事。我正在 Pluralsight. He has a public Github repo for the code examples, writing-testable-code 学习有关编写可测试代码的课程。我连接到存储库并将其下载到本地 Git 存储库中。我能够从 NuGet 下载所有包,它们都显示为他使用的版本(一些有更新,但我认为更新可能会破坏东西)。

我不知道如何运行此代码、构建它或运行其中的测试。

到目前为止我尝试了什么

我的问题是 - 我打开了解决方案,里面有一堆文件和文件夹 - 每个 module/chapter 都分成文件夹(即 Module1/Easy、Module1/Hard、Module2/Easy,等等)。 我想构建 Module1/Easy 文件夹,包括单元测试示例和 运行 测试

在查看 Module1/Easy 时,它有 3 个文件应该可以构建 - program.cs 有一个 main() 并且看起来像一个控制台应用程序,Calculator.cs 有一个简单的 class,CalculatorTests.cs 有为 Nunit 构建的单元测试。该解决方案包含 NUnit、Castle.core 以及来自后续模块(Moq、AutoMoq、Unity、Ninject 等)的内容。它似乎没有 VS 运行ner,所以我添加了 Nunit3TestAdapter - 课程中的那个人安装了 resharper,而我没有,他正在使用 Resharper 测试 运行ner,这可以解释为什么他没有包括它。

我尝试将 "Module1/Easy/Project.cs" 文件设置为 "Set as Startup Item",因为它有一个主要的并且看起来设置为控制台应用程序。然而,运行 将它("Start" 按钮变成了 "Program.cs" 按钮),它没有说它不能 运行 一个 dll。这些测试不会像我根据示例构建的其他一些小项目那样显示在测试资源管理器中。

正确的做法是什么?

我不确定从这里到哪里去。在构建菜单上只有一个 "Build Solution" 和一个关于代码分析的菜单 - 我已经习惯了这里的更多选项。感觉我必须把这个文件夹变成一个项目,也许吧?我总是可以重新安装软件包 - 但最好的解决方案是什么?

我之前在其他书籍、教程或 class 回购中 运行 对此进行了研究,但最终决定弄清楚如何让这个工作正常进行。感谢您的帮助!

备注

  1. 我现在 运行正在 Visual Studio 社区 2017。
  2. 我可以 post 一些文件,但是 repo 是公开可用的,并且不确定 post 能提供什么帮助。

评论和回答的进展

  1. 根据 Biker-Dude 的回答,我将项目切换为构建一个控制台应用程序而不是一个 dll,现在我得到了一个编译时错误,因为它有多个入口点(即每个模块和子文件夹都有自己的 Main () 函数,可能应该是一个单独的项目)。
  2. 在#1 之后,我从解决方案中删除了除一个文件夹之外的所有文件夹,然后它将编译,运行 测试等 - 但我最终希望能够至少单独编译每个子 -文件夹 - 最好的方法是什么?

问题一定是项目必须将输出类型设置为 class 库。浏览解决方案树并:

Select your class's project> right click > Properties > Application > Output Type > Console Application/ Windows Application.

如果其他设置正确,这应该可以解决问题。

在 BikerDude 的回答和 stijn 的评论的帮助下,我最终能够解决这个问题并使一些东西起作用。

首先,在这种情况下不要试图排除任何文件夹,那只会让事情变得更糟!它们仍将位于您的基础 folder/repo 中,只是不会出现在您的解决方案中的任何地方,并且您将无法创建具有相同名称的新文件夹(奇怪的决定...)。而且您必须将它们作为单独的文件添加回来 - 我认为。

最佳解决方案(到目前为止)

最好的解决方案似乎是:

  1. 为解决方案中的每个可构建文件集创建一个新项目(在我的例子中,每个 "module" 文件夹至少一个项目)。我使用“.Net framework console app”项目类型(右键单击解决方案,使用 Add/New 项目)让事情正常进行,但这取决于您下载的特定课程或教程 repo。

  2. 将包含要构建的文件的文件夹或子文件夹从主解决方案移出并移至新项目中 - 您可以单击并拖动以移动它。

  3. Visual Studio 将在您的项目中创建一个空的、预先格式化的文件,您可能必须删除该文件 - 对于 .Net 应用程序,这是 C# 中的 "Program.cs" 文件.对于我的一个文件夹,这个文件已经存在,我必须删除新的文件才能构建。来自不同模块的另一个文件夹设置得更像一个库,无法独立构建,但这个过程确实让我能够构建文件,并允许单元测试显示在测试资源管理器中 运行 测试成功(这是该模块的重点)。

  4. 转到解决方案并右键单击并选择 "Manage Nuget Packages for Solution"。只要为主解决方案安装了所有包,它们就会全部显示在已安装包列表中(您可能需要单击 "Installed" 选项卡)。您可以依次单击每个包,然后在右侧勾选新项目,"Install" 按钮应该可用 - 单击它。重复所有软件包以安装它们。请注意,如果您首先创建所有需要的项目,则可以在此处减少一些重复,然后您可以在此步骤中同时安装所有这些项目(即一次选中所有新项目,而不是每次都重新打开包管理器).

  5. 您可能需要修复命名空间 - 它应该与您从原始解决方案传输的 files/folders 保持一致,但是如果您添加任何新文件来玩东西,命名空间因为它可能不匹配,要在原始文件中看到 类 等,您必须在新文件上更新您的命名空间。

  6. 根据 BikerDude 的回答 - 在将所有内容转移到新项目后,如果您保留解决方案随附的原始项目中的任何内容,它可能不会尝试构建正确类型的项目。您可以通过右键单击项目、选择属性并调整 "output type" 来修复该问题,但它可能没有您需要的选项。如果没有,只需创建一个具有正确类型的新项目并按上述方式传输文件。

执行上述步骤后,我能够使用我移动的文件夹中的原始文件构建我创建的每个新项目。主要是我只需要构建,它启用了这个 tutorial/class 关注的所有单元测试,但这也允许我构建控制台应用程序,如果存在的话。

感谢大家的帮助,为我指明了正确的方向!