Почему мое приложение использует CSC во время выполнения - PullRequest
1 голос
/ 01 апреля 2009

Я экспериментировал с инструментами Remotesoft Linker и Mini Deployment, чтобы создать один собственный исполняемый файл (который не требует установленной инфраструктуры) из моего управляемого кода. Одной из настраиваемых функций, которые он имеет, является наличие csc.exe для конечного исполняемого файла. В документации сказано, что, как правило, это необходимо только при использовании XML-сериализации (так и есть). Я изменил процесс сборки, чтобы использовать SGen для создания сборки сериализации, и добавил результат к ссылкам каждого проекта в решении, использующем мои классы xml. Классы сериализации превращают его в связанный исполняемый файл .net (все библиотеки .net объединены в один управляемый exe); поэтому я предполагаю, что настроил это правильно.

Однако мое приложение все еще пытается выполнить csc при запуске. Я что-то не так делаю со сборкой сериализации, в результате чего она воссоздается во время выполнения; или мое приложение делает что-то еще, что требует csc, и как мне определить, что?

http://www.remotesoft.com/linker/

Создание сборки сериализации Xml как части моей сборки

Редактировать: завершено некоторое тестирование с измененным app.config, чтобы сохранить файлы сериализации видимыми, если они были сгенерированы (протестировано путем отмены времени сборки); и похоже, что я их правильно создал раньше. Если нет другой части фреймворка, которая вызывает csc во время выполнения и результаты которого скрыты при использовании другого флага, я думаю, что виноват инструмент RemoteSoft. Однако я не могу быть уверен, потому что выходной исполняемый файл не оставляет видимых временных файлов, даже если ему сказал это файл app.config, которому он воспользовался.

Я использовал app.info именно так. В других местах я видел примеры, использующие значение 4, но не смог найти никакой разницы между их поведением.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <system.diagnostics>
      <switches>
         <add name="XmlSerialization.Compilation" value="1" />
      </switches>
   </system.diagnostics>
</configuration>

1 Ответ

0 голосов
/ 01 апреля 2009

Возможно, что, хотя вы сгенерировали сборки сериализации XML, что-то в том, как работает Remotesoft Linker, означает, что встроенная среда сериализации может их не распознавать. Я не говорю, что это так, просто это первый порт захода.

Я не знаю деталей того, как среда сериализации решает, использовать ли csc или нет - но это, вероятно, будет первое, что нужно исследовать.

...