2015-03-20 10 views
2

У меня есть cshtml файлы в C# веб-формы проекта, которые я хочу опубликовать с помощью опубликовать профиль, который имеет параметры:Как исключить cshtml из предварительной компиляции во время опубликовать

  • Позволить предкомпилированного сайт, чтобы быть обновляемыми = ложь

Я использую Postal вне ASP.net http://aboutcode.net/postal/outside-aspnet.html, поскольку отправляемые сообщения отправляются из фонового процесса. Это используя замедленное воспламенение и очень похож на это: http://docs.hangfire.io/en/latest/tutorials/send-email.html

Проблема заключается в том, что файл cshtml в настоящее время прекомпилирована, когда я не хочу, чтобы это было и в результате содержание файла:

Это файл маркера, созданный инструментом предварительной компиляции, и его не следует удалять!

мне нужно полное содержимое исходного файл cshtml и не хочу содержания маркеров, но я также хочу, чтобы сохранить настройку Allow precompiled site to be updateable = false так все остальные файлы не могут быть обновлены.

Единственный способ, которым я могу видеть, чтобы сделать это, чтобы иметь Allow precompiled site to be updateable = true

Короче говоря, я хочу, чтобы развернуть cshtml таким же образом, что файлы изображений являются, когда их сборки действие установлено содержание.

Любые идеи?

Edit: Кажется, что кто-то имеет точно такую ​​же проблему:

Is there a way to exclude certain .cshtm files, or an entire folder, from the 'precompile' option so that the .cshtml files can be used outside MVC?

ответ

2

В настоящее время, не было никакого способа, от исключения cshtml (или любые другие) файлы из aspnet_compiler.exe. Это означает, что cshtml будет предварительно скомпилирован вместе со всем остальным - я не могу найти способ обойти его.

Способ, которым я работал, заключался в том, чтобы развернуть «дополнительные» файлы как часть публикации, а не включать их в сам веб-проект.

В этой статье подробно описывается, как можно развернуть дополнительные файлы за пределами визуального проекта студии:

ASP.NET Web Deployment using Visual Studio: Deploying Extra Files

В вашем * .pubxml

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <WebPublishMethod>FileSystem</WebPublishMethod> 
    <LastUsedBuildConfiguration>UAT</LastUsedBuildConfiguration> 
    <LastUsedPlatform>Any CPU</LastUsedPlatform> 
    <SiteUrlToLaunchAfterPublish /> 
    <ExcludeApp_Data>False</ExcludeApp_Data> 
    <publishUrl>C:\Publish\</publishUrl> 
    <DeleteExistingFiles>True</DeleteExistingFiles> 
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish> 
    <PrecompileBeforePublish>True</PrecompileBeforePublish> 
    <EnableUpdateable>False</EnableUpdateable> 
    <DebugSymbols>False</DebugSymbols> 
    <WDPMergeOption>DonotMerge</WDPMergeOption> 
    </PropertyGroup> 
    <Target Name="CustomCollectFiles"> 
    <ItemGroup> 
     <_CustomFiles Include="..\ExtraFiles\**\*" /> 
     <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)"> 
     <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath> 
     </FilesForPackagingFromProject> 
    </ItemGroup> 
    </Target> 
    <PropertyGroup> 
    <CopyAllFilesToSingleFolderForPackageDependsOn> 
     CustomCollectFiles; 
     $(CopyAllFilesToSingleFolderForPackageDependsOn); 
    </CopyAllFilesToSingleFolderForPackageDependsOn>  
    <CopyAllFilesToSingleFolderForMsdeployDependsOn> 
     CustomCollectFiles; 
     $(CopyAllFilesToSingleFolderForPackageDependsOn); 
    </CopyAllFilesToSingleFolderForMsdeployDependsOn> 
    </PropertyGroup> 
</Project> 

Поместите ваши «дополнительные файлы» в папку под названием «ExtraFiles» в родительском каталоге корня вашего веб-проекта, и они будут скопированы во время публикации.

0

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

Я выполняю этот шаг вручную, переписывая файлы электронной почты через FTP.

+0

Если вы отметите выбранный ответ, вы сможете увидеть, как вы можете автоматизировать это как часть своего опубликования. –