Nant aspnet_compiler.exe выпуск сборки
У меня есть следующая задача nant:
<!--Compiles the possible release candidate to be used for further testing and possible release -->
<target name="createReleaseCandidateJob">
<xmlpoke file="${nant.project.basedir}/${webApplicationProjectName}/Web.config"
xpath="/configuration/system.web/compilation/@debug"
value="false" />
<exec basedir="." program="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe"
commandline="-p ${webApplicationProjectName} -v / ${releaseCandidateOutputDir}"
workingdir="."
failonerror="true"
/>
<echo>Completed Compile RC Job</echo>
</target>
У меня также есть следующая строка кода, включенная в мой проект:
myVersion = "2.0b";
#if DEBUG
myVersion = Guid.NewId().ToString();
#endif
это используется при загрузке определенных ресурсов (swf-файлов) путем добавления их в качестве параметра строки запроса и гарантирует, что при отладке кэшированная версия не будет получена, но будет управляемой после освобождения.
Тем не менее, после того, что, как я полагал, должно быть скомпилировано сборкой с повтором, версия все еще устанавливается как Guid, что указывает на то, что я еще не достигаю сборки выпуска. Я проверил web.config, и значение debug изменилось на false, поэтому я предполагаю, что мне не хватает некоторых параметров в аргументах aspnet_compiler.exe, но я не могу найти ничего, что указывает на это, в документации.
1 ответ
Компилятор aspnet_compiler может определить разницу между отладочной и розничной компиляцией, используя значение web.config, но условные выражения обычно передаются компилятору в качестве аргумента (см. Это) независимо от того, что управляет сборкой (например, Visual Studio, NAnt или без разницы). У компилятора ASP этого нет, поэтому вам нужно включить их в codedom
раздел файла web.config:
<system.codedom>
<compilers>
<compiler
language="c#;cs;csharp"
extension=".cs"
warningLevel="4"
compilerOptions="/d:DEBUG"
type="Microsoft.CSharp.CSharpCodeProvider,
System, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" />
</compilers>
</system.codedom>
Здесь compilerOptions предоставляет определение #DEBUG, которое вам нужно. Это будет обнаружено самим компилятором при вызове aspnet_compiler и должно быть отражено в блоках #conditional в вашем коде. Поэтому не забудьте изменить это, когда вы переключаете другой флаг отладки в вашем файле web.config.