我最近在Teamcity中设置了一个新的构建配置,以便为Azure创建一个云服务包.用msbuild构建项目后,我正在调用cspack.exe(Azure SDK 2.2)来创建包.
这是我正在使用的命令:
cspack.exe "ServiceDefinition.csdef"
"/out:%Package.RelativePath%package.cspkg"
"/role:MyWebRole;%teamcity.build.checkoutDir%\t\%build.number%;bin\MyProject.Web.dll"
"/sites:MyWebRole;MyWebSite;%teamcity.build.checkoutDir%\t\%build.number%"
Run Code Online (Sandbox Code Playgroud)
这会创建一个看似正确的cspkg.我已将此包上传到Azure存储并执行了webrole的更新.但过了一段时间,它在执行启动任务时显示错误.之后是重新启动webrole的循环.
在搜索可能的原因时,我注意到我的approot中的一个目录在我的原始项目中包含一个空格,但是在编码为%20的包中.将目录名称更改为原始名称并再次更新webrole后,问题就消失了.
是否有人熟悉这个问题并且可以指出我正确的方向来解决这个问题?
目前我正在开发一个实施Sitecore 7.0 Update 2的项目
在我的数据模板中,我有一个名为Begin Date的字段和另一个End Date.这两个字段是使用"日期"类型(而不是日期时间)创建的.因此,当我编辑和创建项目时,它会显示一个日期选择器,并且我已经提交了一些带有虚拟内容的项目,以及上个月和当前月份的开始和结束日期.
我想要实现的是获得所选月份内的所有项目.我的方法包含一个月和一年的整数作为参数.这应该控制具有应该从Lucene sitecore_master_index获得的开始日期和结束日期的项目.Date-field的Sitecore原始值是ISO datetime-strings.
所以这是我试图从所选月份中获取所有项目的查询.
private void GetItems(int month, int year)
{
using (
IProviderSearchContext context =
ContentSearchManager.
GetIndex("sitecore_master_index").CreateSearchContext())
{
List<EventSearchResultItem> allEvents = context.GetQueryable<EventSearchResultItem>(new CultureExecutionContext(Sitecore.Context.Language.CultureInfo))
.Where(s =>
s.TemplateId == this.EventTemplateID &&
((s.BeginDate.Month == month && s.BeginDate.Year == year) || (s.EndDate.Month == month && s.EndDate.Year == year))
)
.ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
使用此Where语句,我希望返回事件模板的所有项目,其中应包含该月份内的日期.但它返回一个空的结果集.缺点是我无法调试Lamba表达式,所以不幸的是我不知道该范围的值.但不是第1年和第9999年之间的事情:)在IQueryable执行查询并返回一些内容之后,列表中的对象包含属性的正确DateTime.因此它将索引中的字段正确映射到属性.此外,如果我删除日期检查,只有TemplateID检查是Where子句,它返回结果.但即使比较BeginDate与DateTime.MinValue和DateTime.MaxValue也不会返回一些东西.
它使用我为此创建的POCO级EvenSearchResultItem.在这个类中,我已将字段映射到属性,并添加了TypeConverter以将其转换为DateTime.它至少应该......
public class EventSearchResultItem : SearchResultItem
{
[TypeConverter(typeof(IndexFieldDateTimeValueConverter))]
[IndexField("__begin_date")]
public DateTime BeginDate { get; set; }
[TypeConverter(typeof(IndexFieldDateTimeValueConverter))]
[IndexField("__end_date")]
public DateTime EndDate { get; …Run Code Online (Sandbox Code Playgroud)