在Visual Studio中重命名解决scheme(和目录)的正确方法
我有一个相当复杂的Visual Studio解决scheme(2010年,但不应该),我需要重新命名。
我想重命名文件夹以匹配新的解决scheme名称,但是我无法找出自动重新构build文件夹名称的方法,并且通过每个单个项目文件都将是痛苦的。
有没有官方的方式来做到这一点? 或者(更不用说最好),有没有免费的工具来完成这个?
手动编辑.sln文件
此方法完全是为了重命名项目的目录,如在Windows资源pipe理器中所看到的。
此方法不会遇到下面的删除/添加项目文件方法 (引用消失)中的问题,但是如果您的项目在源代码pipe理下(参见下面的注释),则会导致问题。 这就是为什么第2步(备份)如此重要。
- closuresVisual Studio。
- 创build.sln文件的备份(您始终可以回滚)。
- 想象一下你想把目录“Project1”改名为“Project2”。
- 如果不使用源代码pipe理,使用Windows资源pipe理器将文件夹从“Project1”重命名为“Project2”。
- 如果使用源代码pipe理,请使用源代码pipe理提供的function将文件夹从“Project1”重命名为“Project2”。 这保留了文件的历史。 例如,用
TortoiseSVN
,右键单击该文件,selectTortoiseSVN .. Rename
。 - 在.sln文件中,使用文本编辑器(如记事本)将“Project1”的所有实例编辑为“Project2”。
- 重新启动Visual Studio,一切都将像以前一样工作,但将项目放在不同的目录中。
您还可以手动查看重命名解决scheme,也可以查看描述此手动过程的后续 。
优点
- 您可以使Windows资源pipe理器中的目录与解决scheme中的项目名称匹配。
- 此方法不会从其他项目中删除任何对此文件的引用(与删除/添加项目文件方法相比,请参阅下面的其他答案)。
警告
- 在重命名任何内容之前,将所有内容都备份到.zip文件中非常重要,因为此方法可能会在源代码pipe理中产生问题。
- 如果您的项目受到源代码pipe理,如果您在源代码pipe理之外重命名文件或目录(使用Windows资源pipe理器),则可能会产生问题。 如果可以的话, 最好使用源代码控制框架自己重命名文件来保存该文件的历史logging(右键单击上下文菜单 – 它可能有一个重命名文件的function)。
更新2014-11-02
ReSharper已经添加了一个自动化方法,以达到与上述手动方法相同的结果。 如果命名空间带有一条蓝色的下划线,请单击操作金字塔图标以执行以下任一操作:
- 重命名命名空间以匹配Windows资源pipe理器中的目录名称,或者;
- 重命名Windows资源pipe理器中的目录以匹配命名空间。
在第二种情况下,最后一个词在Windows资源pipe理器中定义了新的目录名称,例如,如果我们将名称空间更改为ViewModel2
,它将提供将文件移动到文件夹ViewModel2
。
但是,这不一定会更新源代码pipe理中的文件,因此您可能仍然需要使用手动方法。
更新2017-01-10
使用Visual Studio 2008,2010,2012,2013,2015,2015 Update 1,2,3进行testing。
以下是您需要遵循的重命名解决scheme的步骤:
- 在解决scheme资源pipe理器中,右键单击该项目,select重命名,然后input新名称。
- 在解决scheme资源pipe理器中,右键单击该项目并select属性。 在“应用程序”选项卡上,更改“程序集名称”和“默认名称空间”。
- 在主cs文件(或任何其他代码文件)中,重命名命名空间声明以使用新名称。 为此右键单击命名空间并select重构>重命名input一个新名称。 例如:
namespace WindowsFormsApplication1
-
更改属性/ AssemblyInfo.cs中的AssemblyTitle和AssemblyProduct。
[assembly: AssemblyTitle("New Name Here")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("New Name Here")] [assembly: AssemblyCopyright("Copyright © 2013")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")]
-
从物理上删除bin和obj目录。
-
重命名项目物理文件夹目录。
-
打开SLN文件(在记事本或任何编辑器中)并更改项目的path。
-
清理并重build项目。
Visual Studio中的重命名操作只改变文件名,即对于项目* .prj和解决scheme* .sln。 您将需要单独使用文件系统重命名文件夹,并且您将需要删除和读取项目,因为它们将具有新的文件夹名称。 但是请注意,解决scheme和项目文件分别是texst和xml文件。 您可以编写自己的程序来parsing它们,并重命名文件夹名称,文件名,并在内部修复项目/解决scheme文件。
您也可以导出模板,然后根据您的偏好更改名称,从导出的模板中创build一个新项目
删除您的bin和obj子文件夹,以删除不正确的引用加载,然后使用Windows来search旧名称。
编辑任何代码或XML文件find并重build,应该现在就好了。
以下是在Visual Studio 2013中重命名整个解决scheme的一步一步的方法
假设我们将名为“HelloWorld.ui”的项目更改为“Section1to5.ui”
- 转到解决scheme资源pipe理器(下面的截图),右键单击您想要重命名的项目,然后select“重命名”。 input你想要的新名字。
-
右键单击刚才重命名的项目,然后单击“属性”。 在“应用程序”选项卡下,更改“程序集名称”和“默认名称空间”。
-
在主Program.cs文件(或您可能已创build的任何其他代码文件)中,重命名该名称空间声明以使用新名称。 为此右键单击命名空间并select重构>重命名input一个新名称。 例如:
命名空间HelloWorld.ui —->命名空间Section1to5.ui
-
接下来,展开“属性”并双击AssemblyInfo.cs文件。 你会注意到下面的代码片段:
[assembly: AssemblyTitle("HelloWorld.ui")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Microsoft")] [assembly: AssemblyProduct("HelloWorld.ui")] [assembly: AssemblyCopyright("Copyright © Microsoft 2015")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")]
您需要将Properties / AssemblyInfo.cs中的AssemblyTitle和AssemblyProduct更改为新名称,在本例中,将其从“HelloWorld.ui”更改为“Section1to5.ui”。 完成名称更改后,保存并closuresVisual Studio。
-
在项目目录中,进入“HelloWorld.ui”文件夹并删除“bin”和“obj”目录。
-
完成后,将文件夹“HelloWorld.ui”重命名为新的项目名称。
-
使用记事本或记事本++等文本编辑器打开重命名的解决scheme文件,然后编辑以下行:
项目(“{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}”)=“HelloWorld.ui”,“HelloWorld.ui \ HelloWorld.ui.csproj”,“{39FC65A3-3AE7-4EC9-B8F7-74F971636C70}”
将所有“HelloWorld.ui”实例replace为您为项目select的新名称,在本例中为“Section1to5.ui”。 这将在第6步中将项目的path更改为重命名的目录。
-
用Visual Studio打开解决scheme文件,清理并重build项目。
-
您可能会注意到“debugging/运行”button已被replace为“附加”button。 如果发生这种情况,只需右键单击该项目,然后select“设置为启动项目”选项。 或者,点击工具>自定义>命令>添加命令>debugging,然后添加button。
你完成了重命名项目,如果你有任何疑问随时发布,我会很高兴帮助!
记事本++的“查找文件”function使用罚款(ctrl + H,在文件中查找)。
我尝试了Visual Studio Project Renamer,但是在我尝试使用它的less数情况下它会抛出exception。
我已经与CopyWiz取得了很好的成绩。
我与他们没有任何关系,而且我还没有付钱,但是我可能不久就会发现,因为它是我的C#和C ++项目的唯一工具。 我希望他们赚一点钱,然后继续改进。
删除/添加项目文件的方法
此方法完全是为了重命名项目的目录,如在Windows资源pipe理器中所看到的。
- 使用GIT,SVN或WinZip(重要!)来备份整个项目。
- 在Visual Studio的解决scheme中,删除该项目。
- 在Windows资源pipe理器中重命名该目录。
- 在Visual Studio中再次添加项目。
优点
- 您可以使Windows资源pipe理器中的目录与解决scheme中的项目名称匹配。
缺点
- 如果您删除了一个库,它会从其他项目中删除对所述库的所有引用。 在这之后,解决scheme可能无法编译,直到您将引用添加到所述库(这很容易)。 这就是步骤1(备份)如此重要的原因。
- 如果你有源代码控制,你将失去文件的历史。
右键单击项目并select“在Windows资源pipe理器中打开文件夹”,可以在执行此过程时跟踪项目的存储位置。
如果您是在Visual Studio 2010中创build网站。您可以按如下方式更改项目名称。
步骤1:在Visual Studio 2010中,SLN文件将存储在Visual Studio 2010中的项目文件夹下,源文件存储在Visual Studio 2010中的“网站”文件夹下。
步骤2:通过重命名右键单击该文件夹,重命名文件夹,其中包含您的SLN项目。
步骤3:右键单击重命名的SLN文件重命名SLN文件名。
步骤4:在Visual Studio 2010网站中重命名包含该SLN文件源的文件夹。
步骤5:然后双击您的SLN文件并更改您的SLN源文件夹的根目录。
在Web项目中,唯一适用于Visual Studio 2013的解决scheme:
比方说,我想重命名“project1”为“project2”。 假设我的.sln文件的物理path是:c:\ my \ path \ project1 \ project1.sln
所以我的.csproj文件以及bin和obj文件夹的path应该是:c:\ my \ path \ project1 \ project1 \
-
通过双击project1.sln文件在VS中打开解决scheme。
-
在解决scheme资源pipe理器中,右键单击项目(不是解决scheme!!!),select重命名,然后input一个新名称。
-
在解决scheme资源pipe理器中,右键单击该项目并select属性。 在“应用程序”选项卡上,更改“程序集名称”和“默认名称空间”。
-
在主CS文件(或任何其他代码文件,例如Global.asax)中,将名称空间声明重命名为使用新名称。 为此右键单击命名空间并select重构>重命名input一个新名称。 例如:
命名空间project1
4.1在解决scheme资源pipe理器中,右键单击项目(不是解决scheme!!!),select重命名,然后input一个新名称。
- 确保:Properties / AssemblyInfo.cs中的AssemblyTitle和AssemblyProduct设置为新名称(“project2”)。
1 [assembly:AssemblyTitle(“New Name Here”)] 2 [assembly:AssemblyDescription(“”)] 3 [assembly:AssemblyConfiguration(“”)] 4 [assembly:AssemblyCompany(“”)] 5 [assembly:AssemblyProduct(“新名字在这里“)] 6 [assembly:AssemblyCopyright(”Copyright©2013“)] 7 [assembly:AssemblyTrademark(”“)] 8 [assembly:AssemblyCulture(”“)]
-
closuresVisual Studio。
-
从物理上删除bin和obj目录。
-
将父文件夹和源文件夹重命名为新名称(project2):
在示例中:c:\ my \ path \ project1 \ project1
将是:c:\ my \ path \ project2 \ project2
-
右键单击重命名的SLN文件,重命名SLN文件名称。
-
然后最后打开SLN文件(在记事本或任何编辑器中),复制并replace(Ctrl + h)任何旧名称到新名称。
-
打开VS并点击BUILD – > Clean Solution
-
单击生成 – >生成解决scheme,然后F5运行…
-
注1:如果你得到这样的东西:编译错误CS0246:无法findtypes或命名空间名称“project2”(你是否缺lessusing指令或程序集引用?)
源文件:c:\ Users \用户名\ AppData \ Local \ Temp \ Temporary ASP.NET Files \ root \ 78dd917f \ d0836ce4 \ App_Web_index.cshtml.a8d08dba.b0mwjmih.0.cs
然后转到“Temporary ASP.NET Files”文件夹并删除所有内容。
- 注2:如果你正在试图做一个“另存为”一个新的命名项目,并保持旧的,考虑通过修改web.config中的connectionStrings和重新启动迁移,如果你有一个项目。
我是VS新手。 我只是有同样的问题:需要重新启动项目后几个星期的工作。 这是我做的,它的工作。
- 以防万一,备份你的文件夹项目,虽然你不会触及它,但以防万一!
- 创build一个新的项目,并使用你的'新'项目的名字保存它,这意味着你想改变你的'旧'项目的名称。
- build立它。 之后,你将有一个你想要的名字的项目,但它什么也没有,只是打开一个窗口(在我的情况下的Windows窗体应用程序)。
- 打开新项目,点击项目 – >添加现有项目,然后使用Windows资源pipe理器find您的“旧”文件夹项目,并select下面的所有文件… Visual Studio xxx \ Projects \ oldApp \ oldApp
- select那里的所有文件(.vb,.resx)并将它们添加到你的“新”项目(应该已经打开的项目)。
- 几乎最后一步将是使用解决scheme打开您的项目文件
资源pipe理器“,并在第一个选项卡中将默认的启动窗体更改为应该的窗体。 - 重build一切。
也许更多的步骤,但less或根本不打字,只需点击一下鼠标。 希望它有助于:)
重命名一个网站:
http://www.c-sharpcorner.com/Blogs/46334/rename-website-project-in-visual-studio-2013.aspx
find并编辑IISExpress的applicationhost.config,在这里find:C:\ Users {用户名} \ Documents \ IISExpress \ config
如果您在加载共享项目(如Xamarin)时遇到问题,请记住将引用更改为csproj文件中的共享库。 我开发了一个CocosSharp游戏,Droid / iOS / WP81项目不想加载。 我不得不在每一个引用了共享库的csproj文件(Driod / iOS / WP81)中改变行。 这是由于文件夹名称发生更改而导致的,因此请将YOUR_PREVIOUS_NAMESPACEreplace为新的文件夹名称。
<Import Project="..\YOUR_PREVIOUS_NAMESPACE.Shared\EmptyProject.Shared.projitems" Label="Shared" />
另外我注意到.Driod项目,项目属性中的程序集名称不能使用visual studio(我使用2015)更改。 我必须在.Droid.csproj文件中手动更改程序集名称。
<AssemblyName>YourNameSpace</AssemblyName>
然后我加载解决scheme,并在项目属性视图中出现新名称。 重build后,与该名称生成的DLL。
您可以:
-
单击文件 – >新build – >从现有项目创build项目
-
select你的原始文件,例如。 解决scheme1并input新的文件名解决scheme2
-
更改新解决scheme中的项目名称2
- Visual Studio Code始终要求提供git凭据
- Visual Studio中的发布和debugging模式有什么区别?
- Visual Studio – Resx文件默认“内部”为“公共”
- 将解决scheme添加到Team Foundation Server 2010时显示警告
- VS2010发布configuration文件 – 它们存储在哪里?
- MSBuild ProjectReference:private(“Copy Local”) – 允许的值和行为是什么?
- 如何使用Visual Studio为.net Windows Service创build安装程序
- Visual Studio 2013和BitBucket
- 禁用Visual Studio devenv解决scheme保存对话框