4

オプションを持つ公開プロファイルを使用して公開したい ac# Web フォーム プロジェクトに cshtml ファイルがあります。

  • プリコンパイル済みサイトを更新可能にする = false

送信されている電子メールはバックグラウンド プロセスからのものであるため、ASP.net http://aboutcode.net/postal/outside-aspnet.htmlの外部で Postal を使用しています。これは hangfire を使用しており、これと非常によく似ています: 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 をデプロイしたいと考えています。

何か案は?

編集: 他の誰かがまったく同じ問題を抱えているようです:

.cshtml ファイルを MVC の外部で使用できるように、特定の .cshtm ファイルまたはフォルダー全体を「プリコンパイル」オプションから除外する方法はありますか?

4

4 に答える 4

3

現在、cshtml (またはその他のファイル) を aspnet_compiler.exe から除外する方法はありませんでした。これは、cshtml が他のすべてのものと一緒にプリコンパイルされることを意味します。これを回避する方法はありません。

これを機能させる方法は、「追加の」ファイルを Web プロジェクト自体の一部にするのではなく、パブリッシュの一部として展開することでした。

この記事では、Visual Studio プロジェクトの外部に追加のファイルをデプロイする方法について詳しく説明します。

Visual Studio を使用した ASP.NET Web 配置: 追加ファイルの配置

*.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>

Web プロジェクトのルートの親ディレクトリにある「ExtraFiles」というフォルダに「追加ファイル」を配置すると、公開中にコピーされます。

于 2015-03-20T06:36:27.343 に答える