C# 如何从包含许多示例的教程repo(在VisualStudio/C中)中构建代码 如何在VisualStudio中从类或教程中构建示例代码,并将其拆分为repo中的文件夹?

C# 如何从包含许多示例的教程repo(在VisualStudio/C中)中构建代码 如何在VisualStudio中从类或教程中构建示例代码,并将其拆分为repo中的文件夹?,c#,visual-studio,msbuild,solution,C#,Visual Studio,Msbuild,Solution,所以-我在C几乎是个书呆子,我已经阅读了很多教程,浏览了一些大型C项目,并构建了它们,还做了一些其他的小事情。我正在学习一门关于在计算机上编写可测试代码的课程。他为代码示例提供了一个公共Github repo。我连接到回购协议并将其下载到本地Git回购协议中。我可以从NuGet下载所有的软件包,它们都显示为他使用的版本,并且有一些更新,但我认为更新可能会破坏一切 我不知道如何运行这段代码、构建它或运行其中的测试 到目前为止我试过什么 我的问题是-我打开了解决方案,有一堆文件和文件夹-每个模块/章

所以-我在C几乎是个书呆子,我已经阅读了很多教程,浏览了一些大型C项目,并构建了它们,还做了一些其他的小事情。我正在学习一门关于在计算机上编写可测试代码的课程。他为代码示例提供了一个公共Github repo。我连接到回购协议并将其下载到本地Git回购协议中。我可以从NuGet下载所有的软件包,它们都显示为他使用的版本,并且有一些更新,但我认为更新可能会破坏一切

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

到目前为止我试过什么 我的问题是-我打开了解决方案,有一堆文件和文件夹-每个模块/章节都分为文件夹,即Module1/Easy、Module1/Hard、Module2/Easy等。。我想构建Module1/Easy文件夹,包括单元测试示例,并运行测试

当查看Module1/Easy时,它有3个文件,应该可以构建-program.cs有一个main,看起来像一个控制台应用程序,Calculator.cs有一个简单的类,CalculatorTests.cs有为Nunit构建的单元测试。该解决方案包含NUnit、Castle.core以及后面模块Moq、AutoMoq、Unity、Ninject等的内容。。它似乎没有VS runner,所以我添加了Nunit3TestAdapter-课程中的家伙安装了resharper,我没有,他使用的是resharper测试runner,这可以解释为什么他没有包括它

我尝试将Module1/Easy/Project.cs文件设置为启动项,因为它有一个main,并且看起来像一个控制台应用程序。但是,当开始按钮变为Program.cs按钮时,运行它失败了,因为它不能运行dll。测试并不像我从示例中构建的其他一些小项目那样显示在测试资源管理器中

正确的方法是什么? 我不知道接下来该怎么办。“构建”菜单上只有一个构建解决方案和一个关于代码分析的解决方案——我习惯了这里有更多的选项。我觉得我必须把这个文件夹变成一个项目,也许吧?我总是可以重新安装软件包,但这里最好的解决方案是什么

我以前在其他书籍、教程或课堂报告中也遇到过这种情况,但最终决定找出如何使这种方法发挥作用。谢谢你的帮助

笔记 目前我正在运营Visual Studio Community 2017。 我可以发布一些文件,但回购协议是公开的,不确定要发布什么来帮助我。 评论和回答的进展 根据Biker Dude的回答,我将项目切换为构建控制台应用程序,而不是dll,现在由于有多个入口点,我得到了一个编译时错误,即每个模块和子文件夹都有自己的主功能,可能应该是一个单独的项目。 在1之后,我从解决方案中删除了除一个文件夹以外的所有文件夹,然后它将编译、运行测试等-但我最终希望能够至少单独编译每个子文件夹-最好的方法是什么?
问题一定是项目必须将输出类型设置为类库。浏览解决方案树并执行以下操作:

选择类的项目>右键单击>属性>应用程序> 输出类型>控制台应用程序/Windows应用程序


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

在比克杜德的回答和斯蒂恩的评论的帮助下,我最终能够解决这个问题,并让一些东西工作起来

首先,在这种情况下不要试图排除任何文件夹,这只会让事情变得更糟!它们仍将位于您的基础文件夹/repo中,只是不会显示在您的解决方案中的任何位置,并且您将无法创建具有相同名称的新文件夹。。。。我认为,您必须将它们作为单个文件重新添加

迄今为止最好的解决方案 最好的解决办法似乎是:

为解决方案中的每个可构建文件集创建一个新项目(以我为例),每个模块文件夹至少创建一个项目。我使用.Net framework控制台应用程序项目类型右键单击解决方案,使用“添加/新建项目”使其正常工作,但这取决于您下载的特定课程或教程

将包含要从主解决方案生成的文件的文件夹或子文件夹移动到新项目中-您可以单击并拖动以移动它

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

转到解决方案,右键单击并选择Manage Nuget Packages for solution。只要为主解决方案安装了所有软件包,它们都将显示在已安装软件包列表中,您可能需要单击“已安装”选项卡。您可以依次单击每个软件包,然后在右侧选中新项目,安装按钮应该可用-单击它。对所有软件包重复上述步骤,以便全部安装。请注意,如果您首先创建所需的所有项目,则可以在此处省去一些重复,然后在此步骤中可以同时安装所有项目,即一次选中所有新项目,而不是每次重新打开包管理器

您可能需要修复名称空间-它应该在从原始解决方案传输的文件/文件夹中保持一致,但是如果您添加任何新文件来处理这些问题,则名称空间可能不匹配,并且要在原始文件中查看类等。您必须在新文件上更新名称空间

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

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


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

这让我进入了下一步,但现在它失败了,出现了多个入口点错误——这正是我所期望的。由于每个模块都有多个迷你项目,每个项目都有自己的主要功能,因此我现在需要将项目缩小到一个文件夹中。就像每个文件夹都应该是它自己的项目,然后我就可以构建我感兴趣的项目。也就是说,测试类现在可以构建并运行了!:在这里,要从中获取1个exe,您只能从项目中排除除1个program.cs文件以外的所有文件。或者创建X个项目,每个exe.LightCC一个。如果这对您的案例更有利,您可以右键单击>点击卸载无用的项目。此外,您还可以将其他项目转换为依赖项,并且仍然使用来自各种类的方法。如果您确实需要多个exe文件,让我们说您想要执行应用程序多线程,我需要做一些研究,然后再与您联系。另外,不要点击开始,编译并转到bin,然后分别运行这些exe文件。如果您想调试它们,请添加一个调试器。编译前在代码中启动命令。因此,我确实删除了每个模块文件夹和Module1/Hard文件夹,只留下Module1/Easy,然后它就可以编译了。如何将其他文件夹添加回中还不太清楚,因为它似乎只想添加单个文件,而且我无法使用与已删除文件夹相同的名称重新创建新文件夹。我是否应该为每个子文件夹创建单独的项目,然后将它们单独添加到每个项目中?然后我可以单独构建项目并在该级别控制它们,对吗?我可以右键单击解决方案树中的解决方案、文件夹或项目,仍然可以添加>新建文件夹。你不能吗?对于初学者的课程来说,这是非常令人困惑的:一个项目有多个入口点,而同一个项目也用于测试?不太好。我想他是在用回购协议作为一种手段,一次就把所有的代码示例都转储掉——事实上,我在过去多次遇到过同样的问题。我通常只是浏览回购协议中的代码,或者自己已经有了一个单独的项目/解决方案,所以我只是复制了一些东西。但我一直为我不知道如何处理这种情况而烦恼。答案可能是下载文件夹并构建一个单独的解决方案,然后使用每个文件夹中的单独项目正确地构建它。如果是这样,我同意!