【问题标题】:Generate Solution File From List of CSProj从 CSProj 列表生成解决方案文件
【发布时间】:2009-01-05 20:00:17
【问题描述】:

我有很多项目,但我没有一个包含所有内容的主解决方案。我想要一个的原因是为了重构。

所以我想知道是否有人知道构建解决方案文件的自动方法。手动添加所有项目是不可行的。

【问题讨论】:

  • 要记住的一点是,您的某些项目可能会引用已编译的 dll,而不是创建这些 dll 的项目。在这种情况下,VisualStudio 的内置重构将不会跨越该界限。因此,如果更改了实用程序方法签名,则引用实用程序 dll 而不是项目的应用程序不会自动更改为匹配。

标签: c# visual-studio-2008


【解决方案1】:

2018 年,您可以使用dotnet sln 命令将项目添加到现有解决方案中,并使用dotnet new sln 创建新解决方案。

要从当前文件夹添加所有项目,请在 PowerShell 中使用这些命令

dotnet new sln
Get-ChildItem -Recurse *.csproj | ForEach { dotnet sln add $_.FullName }

【讨论】:

    【解决方案2】:

    我现在更新了我的实用程序(如上所述)以支持创建解决方案文件夹: http://bloggingabout.net/blogs/vagif/archive/2009/12/03/utility-to-generate-solution-files-can-now-create-solution-folders.aspx

    【讨论】:

    • 你能提供代码吗?这样其他人可以扩展它(例如:如果他们有 vbproj 文件或其他东西。)
    • 源代码在BitBucket:bitbucket.org/object/solutionmaker
    【解决方案3】:

    Vagif Abilov 编写了一个很棒的实用程序,可以从项目文件生成解决方案文件。如果您为不“相信”解决方案文件的人工作,那就太棒了。呃。

    生成解决方案文件.exe

    用法:GenerateSolutionFile /p /s [/i includeFilter] [/e excludeFilter]

    http://bloggingabout.net/blogs/vagif/archive/2009/08/04/utility-to-generate-visual-studio-solution-file-for-a-group-of-projects.aspx

    【讨论】:

      【解决方案4】:

      你可以试试this(下面的代码来自这个站点,所有站点..)

      但是,如果它不起作用并且调试需要花费太多时间,我建议尝试手动添加一次。放一些好听的音乐就可以了... :)

      @oefe 我不认为 VS.NET 允许您将项目研发成解决方案,我尝试过一次。

      Imports EnvDTE
      Imports EnvDTE80
      -----------------------------------------------------------------------------------
          Private Shared Sub DoStuff()
      
              Dim filePath As String = "c:\temp"
      
              Dim fileName As String = "bld_TestApp.sln"
      
              Dim fullName As String = Path.Combine(filePath, fileName)
      
              Dim objType As Type
      
              Dim objDTE As EnvDTE.DTE
      
              objType = Type.GetTypeFromProgID("VisualStudio.DTE.8.0")
      
              objDTE = DirectCast(System.Activator.CreateInstance(objType), EnvDTE.DTE)
      
              Console.WriteLine(objDTE.Name + ":" + objDTE.Version)
      
      
              objDTE.Solution.Create(filePath, fileName)
      
              objDTE.Solution.AddFromFile("C:\Common.vbproj")
      
              objDTE.Solution.SaveAs(fullName)
      
      
          End Sub
      

      【讨论】:

        【解决方案5】:

        我以编程方式使用文本操作为 .vcproj 文件创建了解决方案文件(但 cs/vb 的工作原理相同)。如果您在记事本或其他任何工具中打开解决方案文件,则并不难弄清楚该怎么做。

        很遗憾,我无法提供代码,因为它是专有的。

        【讨论】:

          【解决方案6】:

          创建一个空的解决方案,然后一次将所有项目拖放到其中?

          【讨论】:

          • 原始问题指出手动添加它们是不可行的。
          【解决方案7】:

          查看 nAnt,Ant 的 .NET 端口。它有能力做这样的事情,或者在没有它的情况下构建。

          【讨论】:

          • 这很有趣:我给出了最好的解决方案,但我被否决的最多,没有一条评论可以解释#$%## 任何人的想法。与此同时,最糟糕的解决方案(涉及一些时髦的自定义代码)得到了投票。
          • 只是在这里猜测,但如果您要提供合并所有项目的确切 NAnt 任务,您的答案会更有帮助。
          • 据我了解,nAnt 可以替换解决方案文件,但我不知道它是如何创建解决方案文件的——我实际上是它的粉丝,但它可能不适合每个人的需求。
          猜你喜欢
          • 1970-01-01
          • 2013-08-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多