Когда и Как использовать ILMerge с Проектом Visual Studio / Решение

Существует много хороших ответов здесь, таким образом, я сохраню его коротким.

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

, Если Вы собираетесь возвратиться, несколько значений тогда проводят 10 минут, создавая универсальный PairTuple (могут также быть больше, чем парный TripleTuple, я не повторю упомянутый выше пример), и возвратите свои значения тот путь. Я очень не хочу иметь маленькие dto объекты стиля для возврата различный несколько значений, они просто создают помехи месту.

5
задан Alex 13 October 2009 в 17:00
поделиться

1 ответ

Вопрос Лучшие практики ILMerge есть хорошая информация о , почему .

Когда я использую ILMerge, я использую его для создания одной DLL, чтобы упростить развертывание.

Что касается Как , я определяю отдельный, настраиваемый проект VS, «Converged.csproj», если хотите. В этом файле .csproj я определяю настраиваемую цель компиляции. Это шаблонный код, который выполняет ILMerge для всех ссылочных сборок проекта.

Это выглядит следующим образом:

<Target Name="Compile">
  <!-- Outputs="$(IntermediateOutputPath)$(TargetFileName)" -->
  <!-- Outputs="$(TargetPath)" -->
  <Message Text="Performing the Ilmerge." />
  <!-- in this CreateItem stanza, we collect all the DLLs for the referenced projects -->
  <CreateItem Include="@(_ResolvedProjectReferencePaths)">
    <Output TaskParameter="Include" ItemName="AssembliesToMerge" />
  </CreateItem>
  <!-- This weird bit of hieroglyphics is the assemblies to merge, quoted, and separated by spaces -->
  <!-- Example:  "c:\foo\project1\bin\Debug\ProjectOne.dll"   "c:\foo\project2\bin\Debug\ProjectTwo.dll"  -->
  <Message Text="AssembliesToMerge= @(AssembliesToMerge -> '&quot;%(Fullpath)&quot;', ' ')" />
  <!-- Message Text="TargetPath= $(TargetPath)" / -->
  <Message Text="TargetFileName= $(TargetFileName)" />
  <!-- produce the merged assembly - putting the output in the "IntermediateOutputPath" eg obj\Debug. -->
  <!-- it will be copied later by the CopyFilestoOutputDirectory task defined in Microsoft.Common.Targets -->

  <Error
     Text="ILMerge cannot be found. You need to download and install ILMerge in order to build DotNetZip."
     Condition="!Exists('$(ProgramFiles)\Microsoft\Ilmerge\Ilmerge.exe')" />

  <Exec Command="&quot;$(ProgramFiles)\Microsoft\Ilmerge\Ilmerge.exe&quot;  /t:library  /xmldocs /out:&quot;$(IntermediateOutputPath)$(TargetFileName)&quot;  @(AssembliesToMerge -> '&quot;%(Fullpath)&quot;', ' ') " />

  <!-- for some reason the XML doc file does not get copied automatically from obj\Debug to bin\Debug. -->
  <!-- we do it here explicitly. -->
  <Copy SourceFiles="$(IntermediateOutputPath)$(AssemblyName).XML" DestinationFolder="$(OutDir)" SkipUnchangedFiles="true" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" />
</Target>
8
ответ дан 14 December 2019 в 04:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: