Почему этот вызов aspnet_compiler не создает новые сборки .NET?

Я пытаюсь сделать Visual Studio предварительной компиляции моего приложения ASP.NET, которое будет развернуто в Azure. Я добавил в свой файл .csproj следующее:

<Target Name="AfterBuild">
    <Message Text="Starting AspNetCompiler for $(ProjectDir)" Importance="high" />
    <AspNetCompiler
        VirtualPath="/"
        PhysicalPath="$(ProjectDir)"
    />
</Target>

Теперь, когда я прошу Visual Studio подготовить пакет службы, в выводе сборки появляется следующее:

Starting AspNetCompiler for [PathToMyProject]
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v / -p [PathToMyProject]

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

Тем не менее, я не вижу никаких новых сборок .NET в результатах.

Как заставить компилятор ASP.NET создавать сборки .NET для представлений?


person sharptooth    schedule 05.10.2012    source источник


Ответы (1)


Если вы не укажете каталог вывода, вы должны найти вывод в этой папке:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\some-random-id (попробуйте выполнить сортировку по дате изменения, чтобы найти последний каталог).

При вызове aspnet_compiler.exe вы также можете добавить выходную папку к команде:

aspnet_compiler -v "/" -p "C:\Projects\WebApplication1\WebApplication1" C:\CompileOutput

Здесь вы видите вывод в моей папке C:\CompiledOutput

введите здесь описание изображения

person Sandrino Di Mattia    schedule 05.10.2012
comment
Можно ли получить этот случайный путь к папке после предварительной компиляции и скопировать оттуда материал? Я не очень оптимистичен в отношении жесткого кодирования пути. - person sharptooth; 05.10.2012
comment
Я не знаю, как получить доступ к случайной папке, но поскольку вы используете MSBuild, вы можете просто изменить задачу следующим образом: <AspNetCompiler VirtualPath="/" PhysicalPath="$(ProjectDir)" TargetPath="$(ProjectDir)..\PreCompiledOutput" />. Это выведет все в папку PreCompiledOutput в вашем каталоге решений, и вы сможете скопировать файлы из этой папки и впоследствии очистить ее. - person Sandrino Di Mattia; 05.10.2012