Подтвердить что ты не робот

Можно ли исключить из базы данных языки Microsoft.Data.OData?

Клиент Azure Storage 2.0 для С# использует библиотеку Microsoft.Data.OData. Проблема в том, что при сборке я найду в своей папке сборки:

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 дважды

Это составляет около 3,2 Мо, я думаю, бесполезная библиотека в пакете, который я отправляю в Azure Cloud Instance. Мне нравится, чтобы мои пакеты были максимально легкими для быстрого отправки.

Мое приложение настроено на работу с культурой по умолчанию и культурой FR-FR

Безопасно ли исключить все другие языки и КАК я могу добиться этого исключения при сборке?

Вот мой webconfig

<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>
4b9b3361

Ответ 1

Одна вещь, которую вы можете сделать, это изменить ваш файл .csproj, подключиться к событию AfterBuild, а затем удалить папки для всех, кроме нужного языка. Не оптимальный, но он должен работать. Что-то вроде:

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

Как безопасно ли исключать... нет идеи.:)

Ответ 2

Вот такой подход, который вы можете попробовать. Ресурсы, о которых вы говорите, являются частью решения и вывода, поскольку они являются частью пакетов Nuget, на которые имеются ссылки. В частности, они:

  • Microsoft.Data.OData 5.2.0
  • Microsoft.Data.Edm 5.2.0
  • System.Spatial 5.2.0

Я не уверен, насколько актуальны версии для этой темы, но я создал новое веб-приложение ASP.NET MVC 4.5 и добавил пакет Windows Azure Storage 2.0, и они были установлены в результате.

Теперь есть инструмент с открытым исходным кодом под названием Nuget Package Explorer: http://npe.codeplex.com/

С помощью NPE вы можете открывать, просматривать и редактировать пакеты Nuget. Вы найдете папку, содержащую эти пакеты в каталоге packages, в том же относительном пути, в котором находится ваше решение.

Вам нужно отредактировать пакет с NPE и удалить ссылки на файлы ресурсов там и сохранить пакет. Вам также необходимо удалить фактические сборки ресурсов из папки packages.

Вы должны иметь возможность выполнять Clean Solution... и Rebuild Solution и видеть компиляцию программного обеспечения без этих ссылок.

Этот метод существенно корректирует конфигурацию ваших зависимостей, чтобы повлиять на вывод сборки.

Ответ 3

Не обязательно хранить каждую версию. Эти классы имен DLL для каждого языка. Что касается вашей сборки, вы должны обратить внимание на конфигурацию вашей XML-культуры (web.config):

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