0

現時点では、すべての Sitecore レンダリング XSLT とユーザー コントロールが Web アプリケーション プロジェクトに含まれています。それらを独自のプロジェクトに移動したいと考えていますが、それ以外はすべて同じように機能します。

それは可能ですか?

4

2 に答える 2

1

これは私がこれを行うために使用する方法です。ファイルがビルド時に適切なディレクトリに配置されるようにするには、csproj ファイルを変更する必要があることに注意してください。これは、SharedSource の例に基づいています。たとえば、共有ソースの言語フォールバック プロジェクト ルームにある部分言語フォールバック モジュールでは、この手法が使用されています。

プロジェクト ディレクトリで、という名前のファイルを作成し、deploydirectory.txt最終的な Web の場所のパスを入力します。

新しいプロジェクトの csproj ファイルで、このコード ブロックを の直前に追加します</project>(ここで他のカスタム変更が行われていないと仮定します)。

<Target Name="AfterBuild">
  <CallTarget Targets="DeployToWeb" Condition="Exists('deploydirectory.txt')" />
</Target>
<Target Name="DeployToWeb">
  <ReadLinesFromFile File="deploydirectory.txt">
    <Output PropertyName="DeployPath" TaskParameter="Lines" />
  </ReadLinesFromFile>
  <CreateItem Include="App_Config\**\*.*;bin\*.dll;layouts\**\*.ascx" Exclude="**\.svn\**\*.*">
    <Output ItemName="DeployFiles" TaskParameter="Include" />
  </CreateItem>
  <Copy SourceFiles="@(DeployFiles)" DestinationFiles="@(DeployFiles->'$(DeployPath)\%(RelativeDir)%(Filename)%(Extension)')" SkipUnchangedFiles="true" />
</Target>

このコード ブロックは現在のところ、app_config 内のすべてのファイル、bin 内のすべての dll ファイル、およびレイアウト ディレクトリとサブ ディレクトリ内のすべての ascx ファイルを deploydirectory.txt ファイル内のパスにコピーします。は**、それらがターゲットの適切なサブディレクトリに配置されることを定義します。

これは現在、見つかった .svn ディレクトリを除外するように設定されています。

最後に、これはプロジェクト ディレクトリにファイル deploydirectory.txt がある場合にのみ実行されます。それ以外の場合、このディレクティブは完全に無視されます。

編集:必要に応じて、移動する必要があるファイルを追加するたびに csproj ファイルを変更する必要がないように、移動するディレクトリ/ファイルのリストを別のファイルに含めることもできます (たとえば、ユーザーコントロールを使用して、後で xslt レンダリングを追加するなど)

<Target Name="AfterBuild">
  <CallTarget Targets="DeployToWeb" Condition="Exists('deploydirectory.txt')" />
</Target>
<Target Name="DeployToWeb">
  <ReadLinesFromFile File="deploydirectory.txt">
    <Output PropertyName="DeployPath" TaskParameter="Lines" />
  </ReadLinesFromFile>
  <ReadLinesFromFile File="SourceFilePaths.txt">
    <Output ItemName="SourceFilePaths" TaskParameter="Lines" />
  </ReadLinesFromFile>
  <CreateItem Include="@(SourceFilePaths)" Exclude="**\.svn\**\*.*">
    <Output ItemName="DeployFiles" TaskParameter="Include" />
  </CreateItem>
  <Copy SourceFiles="@(DeployFiles)" DestinationFiles="@(DeployFiles->'$(DeployPath)\%(RelativeDir)%(Filename)%(Extension)')" SkipUnchangedFiles="true" />
</Target>

SourceFilePaths.txt以下を含む場所

App_Config\**\*.*
bin\*.dll
layouts\**\*.ascx
于 2012-05-23T02:29:16.993 に答える
1

物理ファイルがビルド プロセスの一部として本来あるべき場所に配置される限り、物理ファイルを独自のプロジェクトに移動できない理由はわかりません。唯一の問題は、Sitecore がファイルを探していて見つからない場合です。

于 2012-05-22T13:43:08.667 に答える