Sitecore渲染可以在一个单独的项目中吗?

时间:2012-05-22 13:23:09

标签: sitecore

目前,我们在Web应用程序项目中拥有所有Sitecore渲染XSLT和用户控件。我们希望将它们移动到他们自己的项目中,但其他任何工作都是相同的。

这可能吗?

2 个答案:

答案 0 :(得分:1)

只要物理文件最终应该作为构建过程的一部分,我就看不出为什么不能将它们移动到自己的项目中。您遇到的唯一问题是Sitecore是否正在查找文件而无法找到它们。

答案 1 :(得分:1)

这是我用来执行此操作的方法,请注意它确实需要修改csproj文件以确保将文件放在构建的相应目录中。我基于SharedSource示例,例如,Language Fallback project room in Shared Source中的Partial Language Fallback模块使用了这种技术。

在项目目录中,创建一个名为deploydirectory.txt的文件,并放置最终网址的路径。

在新项目的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文件你需要移动(比如你从usercontrols开始,然后再添加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