Visual Studio复制项目


141

我想复制我的项目。我宁愿不从头开始通过添加文件和引用等来完成此操作。请注意,我并不是要复制用于部署。只是普通副本。

VS中是否有工具可以做到这一点?我正在使用VS 2008

Answers:


144

如果要复制,最快的方法是保存项目。然后在文件系统上复制整个内容。返回Visual Studio并打开副本。从那里,我很可能建议重命名项目/解决方案,以使您没有两个相同的名称,但这是制作副本的最快方法。


25
那么,ProjectGUID会发生什么?
Lars Corneliussen

4
不要忘了删除文件的svn,如果您有任何(我做到了!) - > weblogs.asp.net/jgalloway/archive/2007/02/24/...
qbantek

51
如果同一解决方案中存在另一个具有相同GUID的项目,则VS将自动更新项目GUID。
塞巴斯蒂安·克莱斯曼斯基

3
我艾米尝试这样做,但它不会重命名应用程序名称空间。不是我要找的东西。
杰森

3
VS在Community 2017版本15.8.4中未自动更新Project GUID。实际上,如果您的AssemblyInfo.cs在源代码控制中怎么办?
PeterVermont

134

只需创建一个模板 ;

从您的项目中选择:项目-导出模板

该向导将让您定义

  • 模板名称
  • 模板说明
  • 图标
  • 预览图片

然后将您的项目压缩到“我的导出模板”目录中。您还可以选择在创建新项目时使模板可用。

当您使用模板创建新项目时,在每个文件中,'your_new_project_name'的名称空间都是正确的,所有引用正确,所有内容都非常完美:)

您可以将.zip文件发送给任何人,他们必须将.zip文件复制(而不是解压缩)到Templates \ ProjectTemplates目录中,以便他们也可以使用。

我制作了一个ASP.NET MVC模板,其中包含了我喜欢的文件夹,布局页面,视图模型等。

注意:
如果您的项目中有一个空文件夹,则不会将其添加到模板中,因此我只为每个文件夹添加了一个空类,并为图像文件夹添加了示例图片。


28
海事组织,最佳答案。
fischgeek

14
在VS2017中,“导出模板”位于“项目”顶层菜单项下。
Choco

3
这是非常有用的,以前我怎么不知道呢?谢谢!
Aldarrion '18年

5
这应该是选择的答案。好简单!该过程也应该将其复制到您的Templates \ ProjectTemplates文件夹中,只需确保即可。我必须重新启动Visual Studio才能在项目创建对话框中看到它。
midoriha_senpai

3
当需要导入模板以创建新项目时,我不知道该怎么做。原来,我不得不使用“新建项目”对话框中的搜索栏来查找模板。
Tawab Wakil

6

我想如果这是您经常执行的操作,那么有一个小工具(非免费)可以为您做这件事:我没有使用过,所以不确定它有多好:

http://www.kinook.com/CopyWiz/

CodePlex上还有一个项目:

http://clone.codeplex.com/

我可能会尝试Codeplex项目,如果它不起作用,我将手动重命名所有内容并编辑sln文件。


Codeplex应用程序“解决方案克隆”效果很好。它复制并重命名所有解决方案文件,并保留所有引用。我唯一需要做的就是在打开复制的解决方案后将其指向新的重命名项目文件,然后在项目属性中重命名程序集名称和根名称空间。但是,这比手动完成所有操作要容易得多。
Fütemire

4

完全不建议复制项目,因为内部构造的某些配置文件(例如.csproj,.vspscc等)可能(并且很可能会)指向引用,这些引用属于先前解决方案的位置以及系统或系统中的其他路径/位置。 TFS。除非您是阅读这些文件和修复参考的专家,否则请勿尝试复制项目。

您可以创建与您要复制的类型相同的骨骼项目,这将创建适当的.csproj,.vspscc文件。现在,您可以从以前的项目中复制类文件,脚本和其他内容,因为它们不会影响。这将确保顺利进行构建和版本控制(您应该对此感兴趣)

说完这些,让我为您提供一种逐步复制项目的方法:

  1. 转到要在解决方案资源管理器中复制的项目,然后单击鼠标右键
  2. 现在选择在文件资源管理器中打开文件夹(假设您已将解决方案映射到磁盘上的本地路径)。
  3. 选择要复制为整个文件夹的项目(以及所有依赖项,.vspscc文件,.csproj文件)
  4. 将它们粘贴到所需的位置(可以是相同的解决方案文件夹,甚至可以是另一个解决方案文件夹。如果它位于同一解决方案文件夹中,则需要将其重命名,还需要将.csproj和其他内部文件重命名为新名称)。
  5. 无需返回Visual Studio,右键单击“解决方案”>“添加”>“现有项目” ...
  6. 立即从您放置的位置浏览并选择项目文件(.csproj文件),然后选择“ 打开
  7. 该文件现在显示在解决方案资源管理器中,供您使用。

现在,您可能必须解决一些构建错误,可能使用重复/缺少的引用和内容,但否则,它在逻辑和结构上会像您期望的那样原始。


2
更新:截至2019年,最佳答案是@Shane给出的答案。制作VS模板是克隆项目而没有引用问题的理想方法。
维克拉姆K

3

我按照这些步骤操作,并使用了称为Resharper的开发工具,顺便说一句,它很棒:

所以,

  1. 现有项目文件夹复制到所需的目标位置
  2. 转到源代码管理,然后右键单击所需的根文件夹,然后选择“将项目添加到文件夹...”。然后,将出现一个向导来选择要复制的文件(不需要某些文件,向导会默认引导您为此原因)。
  3. 更改解决方案文件的名称(* .sln)
  4. 更改子项目的名称(如果存在)。
  5. 使用Resharper更改绑定名称空间的名称(我会安全地自动执行肮脏的工作)。另一种方法是使用新名称手动更改所有名称空间。
  6. 与方法名称相同的操作。
  7. 如果要更改,请检查解决方案的属性

而已。你准备好了!!!


1

最好的方法实际上是从头开始创建一个新项目,然后进入要复制项目文件的文件夹(项目,form1,除文件夹外的所有文件)。重命名文件(除了form1文件):例如,我将Ch4Ex1文件复制到我的Ch4Ex2项目中,但首先将文件重命名为Ch4Ex2。将这些文件复制并粘贴到Visual Studio中新项目的解决方案资源管理器中。然后只需覆盖文件即可,您应该一切顺利!

旧线程,但我希望它能对寻求此答案的任何人有所帮助!


0

我有一个项目,其中源文件位于项目文件夹下面的文件夹中。当我复制没有源文件夹的项目文件夹并打开复制的项目时,源文件不会丢失,但可以在旧位置找到。我关闭了该项目,还复制了源文件夹,然后重新打开了该项目。现在,该项目神奇地引用了复制的源文件(新路径都显示在“另存为”上,并且文件中的更改已保存在复制的版本中)。

需要注意的是:如果旧项目文件夹和新项目文件夹都不都在使用的库文件夹下,则上述魔术也会丢弃对该库的绝对引用,并期望它在相同的相对路径下。

我在VS Express 2012上尝试过。


0

我的解决方案略有不同-程序包所在的计算机已失效,因此我被迫在另一台计算机上重新创建它。

我所做的(在VS 2008中)是在目录中打开以下文件:

                  - <package name>.djproj
                  - <package name>.dtproj.user
                  - <package name>.dtxs
                  - <package name>.sln
                  - Package.dtsx

当我这样做时,会出现一个弹出窗口,询问我sln文件是否将是一个新的解决方案,并且当我单击“是”时,一切正常。


0

在尝试上述解决方案并为MVC项目创建副本之后

对于MVC项目,请更新.csproj文件中的端口号,您可以借助iis applicationhost.config来检查端口号。相同的端口号将导致IIS中的程序集加载问题。


0

遵循Shane的上述回答(效果很好的BTW)…

您可能会在参考列表中遇到许多黄色三角形。这些大多数可以通过Build->Clean Solution和消除Build->Rebuild Solution

我碰巧有一些更顽固的Google API引用。

尝试重新安装相同版本的NuGet软件包无效。
Visual Studio认为您已经安装了它。

要解决此问题:
1:写下原始版本。
2:安装下一个更高版本...然后将其卸载。
3:安装步骤1中的原始版本。


0

我使用Visual Studio 2013,其中“项目”>“导出模板”不是一个选项。 是我用来克隆项目的东西。

在您的解决方案中:文件>导出模板>选择要从中创建模板的项目,注意保存路径

在此处下载并安装VS 2013 SDK

在可扩展性下创建新的VSIX项目

从“ VSIXManifest”对话框中,选择“资产”选项卡

填写作者文本框

选择“项目模板”作为“类型”并浏览以添加导出的模板(保存在您在步骤1中记下的路径)

保存并构建VSIX项目。转到VSIX项目的... / bin / Debug文件夹,然后双击以运行.vsix文件

启动Visual Studio的新实例,您应该在模板所在的任何项目类型下都可以看到模板。从模板创建一个新项目

您将必须重新添加任何dll引用


0

最简单的方法是将项目导出为模板并将其保存到默认模板位置。然后,将模板复制到要移动到的位置的完全相同的目录中。之后,在新位置打开Visual Studio,创建一个新项目,然后会提示您搜索模板。搜索您为模板命名的任何内容,选择它即可完成!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.