我可以从构建中排除Microsoft.Data.OData 语言资源吗?

本文关键字:语言 OData 资源 Data Microsoft 构建 排除 我可以 | 更新日期: 2023-09-27 18:31:09

Azure Storage 2.0 client for c# use Microsoft.Data.OData library.问题是在构建时,我在构建文件夹中找到:

bin/de/Microsoft.Data.Edm.resources.dll
bin/de/Microsoft.Data.OData.resources.dll
bin/de/Microsoft.Data.Services.Client.resources.dll
bin/de/System.Spatial.resources.dll
bin/es/Microsoft.Data.Edm.resources.dll
bin/es/Microsoft.Data.OData.resources.dll
bin/es/Microsoft.Data.Services.Client.resources.dll
bin/es/System.Spatial.resources.dll

等语言 de, es, fr, it, ja, ko, ru, zh 两次

这使得我发送到 Azure 云实例的包中大约 3.2 Mo 的库无用。我喜欢让我的包裹尽可能轻,以便快速发送。

我的应用程序设置为使用区域性默认值和区域性 FR-FR

排除

所有其他语言是否安全,如何在构建时实现此排除?

这是我的网络配置

<runtime>
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
           <assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
           <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
        </dependentAssembly>
        <dependentAssembly>
           <assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
           <bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
        </dependentAssembly>
        <dependentAssembly>
           <assemblyIdentity name="Microsoft.Data.Services.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" />
           <bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
        </dependentAssembly>
        <dependentAssembly>
           <assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral" />
           <bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
        </dependentAssembly>
     </assemblyBinding>
  </runtime>

我可以从构建中排除Microsoft.Data.OData 语言资源吗?

您可以

做的一件事是修改.csproj文件,挂接到 AfterBuild 事件,然后删除除所需语言之外的所有文件夹。不是最佳的,但它应该有效。像这样:

<Target Name="AfterBuild">
  <ItemGroup>
    <DirsToClean Include="$(OutDir)'de;$(OutDir)'es;..." />
  </ItemGroup>
  <RemoveDir Directories="@(DirsToClean)" />
</Target>

至于排除是否安全...不知道。:)

这是您可以尝试的方法。 您所说的资源是解决方案和输出的一部分,因为它们是引用的 Nuget 包的一部分。 具体来说,这些:

  • Microsoft.数据.OData 5.2.0
  • Microsoft.数据.EDM 5.2.0
  • 系统空间 5.2.0

我不确定这些版本与本主题的相关性如何,但我创建了一个新的 ASP.NET MVC 4.5 Web 应用程序并添加了 Windows Azure Storage 2.0 包,结果安装了它们。

现在,有一个名为Nuget包资源管理器的开源工具:http://npe.codeplex.com/

使用 NPE,可以打开、查看和编辑 Nuget 包。 您将在 packages 目录中找到包含这些包的文件夹,该文件夹位于解决方案所在位置的相同相对路径中。

您需要使用 NPE 编辑包,并删除对其中的资源文件的引用并保存包。 您还需要从packages文件夹中删除实际的资源程序集。

您应该能够执行Clean Solution...Rebuild Solution,并看到软件在没有这些引用的情况下编译。

此技术实质上是调整依赖项的配置以影响生成输出。