【问题标题】:Can Sitecore renderings be in a separate project?Sitecore 效果图可以放在单独的项目中吗?
【发布时间】:2012-05-22 13:23:09
【问题描述】:

目前,我们的 Web 应用程序项目中有所有 Sitecore 渲染 XSLT 和用户控件。我们希望将他们转移到他们自己的项目中,但其他一切都一样。

这可能吗?

【问题讨论】:

  • 您的意思是它们在一个 Web 应用程序项目中,而您希望它们在另一个单独的 WAP 中?
  • @MarkUrsino 是的。虽然,新项目不一定需要 WAP。任何项目类型我都可以。

标签: sitecore


【解决方案1】:

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

在您的项目目录中,创建一个名为 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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-13
      • 2015-09-12
      • 2022-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多