代码之家  ›  专栏  ›  技术社区  ›  Ed Guiness

是否查找并添加包含给定类型的.NET程序集的项目引用?

  •  1
  • Ed Guiness  · 技术社区  · 17 年前

    我正在处理一个大型(270多个项目)vs.net解决方案。是的,我知道这是在推动与vs的友谊,但它是继承和废话。无论如何,为了加快解决方案的加载和编译速度,我已经删除了所有当前不在工作的项目…这反过来又从我想要保留的项目中删除了那些项目引用。所以现在我将经历一个令人麻木的过程,将二进制引用添加到保留的项目中,以便找到引用的类型。

    以下是我目前的工作方式;

    • 尝试编译,获取 错误,“缺少类型或命名空间”
    • 复制错误的第一行 列表到剪贴板
    • 使用连接到 热键(ahk)我从中提取类型名 错误消息并将其存储在Windows剪贴板中
    • 我将类型名粘贴到源中 洞察符号浏览器并注意 包含类型的程序集
    • 我回到vs再加上 作为对的二进制引用的程序集 相关项目

    所以现在,大约30分钟后,我想有一个更快的方法…

    4 回复  |  直到 10 年前
        1
  •  1
  •   Claudiu    15 年前

    不,目前没有一种内置的更快的方法。

    我建议不要修改现有的解决方案,并创建一个新的解决方案,其中包含复制(例如重命名和编辑)您要处理的项目的新项目。如果您发现数百个项目的解决方案对您来说是一个问题,那么您可能只需要处理一个子集。从几个新项目开始,添加二进制(不是项目)引用,然后从那里开始。

        2
  •  2
  •   Siyual Ranjit Singh    10 年前

    我想到了这些解决方案:

    • 你可以试着用 Dependency Walker 或类似的程序来分析依赖关系。
    • 分析msbuild文件(*.csproject)以获取依赖项列表

    编辑:
    刚找到两个很酷的工具 Dependency Visualizer 和; Dependency Finder 在codeplex上,我认为它们可以大大帮助您。

    编辑:
    @EDG,我完全误解了您的问题,因为您丢失了csproj文件中的引用,所以您必须使用静态分析工具(如ndepend)或尝试在运行时分析依赖项。

        3
  •  1
  •   Gulzar Nazim    17 年前

    您可以尝试在记事本中打开旧的.csproj文件,并用引用标记替换projectreference标记。如果你能写一个解析器,可以随意分享。:)

    .csproj文件中的条目(如果它是项目引用)

      <ItemGroup>
        <ProjectReference Include="..\WindowsApplication2\WindowsApplication2.csproj">
          <Project>{7CE93073-D1E3-49B0-949E-89C73F3EC282}</Project>
          <Name>WindowsApplication2</Name>
        </ProjectReference>
      </ItemGroup>
    

    .csproj文件中的条目(如果它是程序集引用)

      <ItemGroup>
        <Reference Include="WindowsApplication2, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
          <SpecificVersion>False</SpecificVersion>
          <ExecutableExtension>.dll</ExecutableExtension>
          <HintPath>..\WindowsApplication2\bin\Release\WindowsApplication2.dll</HintPath>
        </Reference>   </ItemGroup>
    
        4
  •  1
  •   Emperor XLII    17 年前

    不是从解决方案中删除项目文件,而是卸载不工作的项目(右键单击该项目并选择 卸载工程 )只要卸载的项目已经构建一次,引用它的任何其他项目都将能够在项目的输出目录中找到程序集并用它构建。