You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为团队统一标记隐式加载的程序集以避免误删?

问题场景

我们的代码仓库包含多个应用程序与服务,还有大量供它们共享的DLL文件。采用控制反转(DI)机制,通过剔除未使用的DLL来减小单个应用体积,这些DLL由生成.exe或服务的解决方案引用。

但由于代码未显式引用这些DLL内的内容(通过接口隐式调用),Visual Studio和Resharper会将其标记为未使用引用。新开发者使用Resharper的优化引用功能清理后,会导致DLL未随应用发布,引发运行时问题。

已知Resharper可将项目标记为“运行时使用”来解决此问题,但该设置默认存储在用户配置(.DotSettings.user)中,无法直接共享;复制配置到团队共享配置文件也未生效,需要实现团队范围内的统一配置。

解决方案
  • 正确编辑团队共享的.DotSettings文件
    从.DotSettings.user中找到对应隐式引用程序集的配置节点,格式类似:

    <s:Boolean x:Key="/Default/CodeInspection/AssemblyReferences/ImplicitlyUsedAssemblies/AssemblyName=MySharedDLL/@EntryValue">True</s:Boolean>
    

    将这些节点复制到团队共享的.DotSettings文件中,确保节点路径是针对解决方案/项目的全局配置(而非用户私有配置),替换MySharedDLL为实际需要保留的程序集名称,多个程序集则添加多个对应节点。

  • 通过Resharper设置界面导出精准配置

    1. 打开Resharper设置(快捷键Alt+R, S),定位到「代码检查 → 程序集引用 → 隐式使用的程序集」。
    2. 添加所有需要保留的共享DLL程序集。
    3. 点击设置界面的「导出」,选择仅导出当前修改的设置项,保存到团队共享的.DotSettings文件中,避免混入个人自定义配置。
  • 项目文件层面强制保留引用
    在应用/服务的.csproj文件中,对隐式引用的DLL添加明确配置,确保发布时自动复制,同时添加注释提示:

    <ItemGroup>
      <Reference Include="MySharedDLL">
        <HintPath>..\Path\To\MySharedDLL.dll</HintPath>
        <Private>True</Private>
        <!-- 此DLL通过DI隐式调用,禁止删除引用 -->
      </Reference>
    </ItemGroup>
    

    若使用.NET剪裁功能,还需添加<DisableTrimAssembly>True</DisableTrimAssembly>防止被剪裁。

  • 团队规范约束
    在项目README或开发指南中明确标注哪些是隐式引用的共享DLL,禁止使用Resharper优化引用时删除这些条目;同时将团队共享的.DotSettings文件加入代码仓库,要求所有开发者启用Resharper的团队设置同步。

内容的提问来源于stack exchange,提问作者DaCodaDragon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 04:33:32