分类存档: SharePoint 发展

"一个或多个字段类型安装不正确的原因之一”

我不会针对列表中的加枫查询的 web 部件昨天做小的调整。  改变, 部署它,并击中了一个错误:

在三天 Outlook 天气预报 WebPart 发生了意外的错误. 请与系统管理员联系. 一个或多个字段类型安装不正确. 转到要删除这些字段的列表中设置页面.

我面临着另一个古怪问题早所以我并没有立即连接我加枫查询与 SharePoint 向我报告的错误。  我做了一个快速的必应搜索和 发现这个有用的博客负责 Nahta  (http://snahta.blogspot.com/2009/01/one-or-more-field-types-are-not.html).

这里是坏的查询:

查询。查询 ="<在哪里><和><Neq><FieldRef 名称 = 'abbr' /><值类型 = 文本>SFNY</价值><FieldRef 名称 = 'abbr' /><值类型 = 文本>小家庭改善计划</价值></Neq></和></在哪里>";

在这里,它被固定:

查询。查询 ="<在哪里><和><Neq><FieldRef 名称 = 'abbr' /><值类型 = 文本>SFNY</价值></Neq><Neq><FieldRef 名称 = 'abbr' /><值类型 = 文本>小家庭改善计划</价值></Neq></和></在哪里>";

所以, 这个故事的寓意是: 确保您加枫是正确或您可能会得到古怪错误.

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

</结束>

SharePoint 2010 卡在"部署的解决方案” 状态

我用 PowerShell 将解决方案部署到 SharePoint 场 (h/t:  科里 · 罗斯 和他 博客张贴内容). 

接着,中央管理, 访问系统设置,然后"农场管理解决方案"将它部署在农场和有关我 (轻微) 失望, 它被困在"部署".

这一问题拿出很多时候在 MSDN 论坛上看到了。, 就这件事非常紧张。  我就有点搜索和 发现这很有帮助的文章 (由从看似吹风的人 http://www.resolutionsnet.co.uk/).  我取消部署作业和点击到解决方案, 它告诉我它已成功部署解决方案,为三场中的四个服务器.

我去了误入歧途的服务器, 停止计时器服务并重新启动它。  Windows 服务器实际上告诉我,服务未能响应命令, 这就告诉我它生病.

这一次, 当我回到中央管理, 我是能够将它部署没有问题.

希望这位的信息将帮助一些在绑定一天的.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

误差的一天: "不能添加指定的程序集到 gac 中”

我已经有点奋斗的历史与 visual studio 2010 关于 sp2010 解决方案和得到此错误:

在 '添加解决方案' 的部署步骤中发生错误: 错误: 无法将指定的程序集添加到全局程序集缓存: YourAwesomeDLLThat IAmJustNotGoingToInstallRightNow.dll

我走到 GAC 本身 (c:\windowsassembly) 要尝试并删除了"在使用中的文件"错误.

我做了 iisreset, 我几乎下载 微软, 我停下来的计时器服务在服务 … … 最后, 我只是关闭并重新打开 visual studio 本身也终于要关闭它.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

快速、 方便: 调试 VS 2010 解决方案部署

Visual Studio 2010 在部署过程中几次报告难调试错误。  快速、 方便的方式做一些非常粗糙的调试就抛出自己命名的异常。  Visual Studio 将在输出控制台中显示它们.

考虑这段代码:

image

如果此功能只限于一个 web 应用程序, 网站也将为空。  如果您尝试并引用站点的属性, 你会含糊不清的错误:

在 '添加解决方案' 的部署步骤中发生错误: 未设置到对象的实例的对象引用.

不过, 如果引发一个新异常,并传递到构造函数的字符串, 您得到一个稍有更多有用的信息:

image

它是一种原油技术, 但非常快速和简单.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

计时器作业 FeatureActivated 和功能范围

我一直用某人交给我的计时器作业的一些代码。  他没有提供实际功能激活代码,所以我不得不把它写, 答案是肯定的。  我利用了 安德鲁 Connell 著名博客张贴内容 关于这个问题.

我使用的 Visual Studio 2010 和部署不断失败并出现错误"错误部署步骤中发生 '添加解决方案': 对象引用不设置到对象的实例。

我正在他的代码太夸张了。  我范围要 web 应用程序级别的特征, 如图所示:

image

结果, 发送到接收方的属性是从 web 应用程序, 不是一个网站的集合。  在结束, 代码看起来像这样:

公共覆盖 void FeatureActivated(SPFeatureReceiverProperties 属性)
{

    // 不做以下使用的 web 应用程序作用域功能, 它导致绝望 微笑
    // 网站中的 SPSite = 属性。作为中的 SPSite Feature.Parent;

    SPWebApplication wa = 属性。作为 SPWebApplication Feature.Parent;

    如果 (wa = = null) 引发新异常("webapp2 是空的"。);

    foreach (SPJobDefinition 在华工作。JobDefinitions)
    {

        请尝试
        {
            如果 (作业。名称 = = List_JOB_NAME)

                作业。删除();
        }
        赶上 (异常 e)
        {
            引发新异常("标记 2");
        } // 捕获异常 e
    }

    // 安装作业

    WeatherForecastTimerJob weatherForecastTimerJob =
        新 WeatherForecastTimerJob(List_JOB_NAME, wa);

    SPMinuteSchedule 附表 = 新 SPMinuteSchedule();
    附表。BeginSecond = 0;
    附表。EndSecond = 59;
    附表。间隔 = 5;
    weatherForecastTimerJob.Schedule = 附表;
    weatherForecastTimerJob.Update();

}

外卖的关键是,当该功能作用范围是一个 web 应用程序, SharePoint 传递给您功能接收机的 SPFeatureReceiverProperties 具有 web 应用程序级别的参数。  安德鲁的旧博客条目假定它应用范围限定为网站集.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

Microsoft.SharePoint.ApplicationPages.Administration.dll 在哪里?

我被传引用 Microsoft.SharePoint.ApplicationPages.Administration.dll 的 visual studio 项目。  我花了一点虽然找到它和我的思想会分享。  在我的环境, 它位于:

c:\程序 filescommon filesmicrosoft sharedweb 服务器 extensions14configadminbin

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

CodePlex 项目 – SP2010 资源管理器

作为持续努力的去学习 SharePoint 技术低级别详细信息的一部分 2010, 已经创建了"SharePoint 资源管理器"好心的工具。  这个想法并不新鲜。  我不止一次使用此项目: http://sharepointexplorer.codeplex.com/.  我的想法是要创建 SharePoint 版本使用连接 web 部件以显示所有底层的细节可以提供的对象模型。 

这篇文章作为志愿者的这两个发布的项目,以及一个调用。  如果你在这个项目上工作感兴趣, 让我知道通过电子邮件 (galvin.paul@gmail.com) 我们要把它做,并.

这是该项目: http://sp2010explorer.codeplex.com/

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

使用 ASP.NET Treeview 控件中的 TreeNodeBinding

我一直希望能尽快公布 CodePlex 提供了很好的集成的大量的相互交谈通过发掘下盖的 SharePoint 站点提供商/消费者连接的 web 部件的项目。  (这当然已做过, 但这是一个学习项目一样什么都重要).  这是为了将取代的 SharePoint 的 windows 资源管理器视图 2010 文档库.

代码有平常的递归调用 SPWeb 和 Splist 从给定的起始点。  建立一个 XML 字符串,看上去像这样的对象,不会,遍历:

<sitecollection url =’http://demo2010a:9090′>
 
<网站
     标题 =' 你好世界沙盒 ' 
     模板 =' 的团队能够快速组织网站, 作者, 和共享信息, 废话废话废话 '>

     <列表
        标题 ='BCC_Health_Services_FAQs’
        模板 ='CustomList’
       
listid =’http://demo2010a:9090/helloworldsandbox[delim]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</列表>

     <列表
        标题 = 'BCC_Notifications' 
        模板 = 'CustomList' 
        listid =’
http://demo2010a:9090/helloworldsandbox[delim]5a5a13d1-877 c 41 c 0-9063-b9612be80d5e’>
     </列表>

  </网站>

</sitecollection>

我期望干净了之前所有, XML 是说和做.

我想最终获得信息,并到 Treeview 控件。  不完全地球次多么重大的东西.

我在这里拿的挑战是要连接到 XML 数据源控件,而不是手动建立我的 treenodes,因为我遍历树的树视图。  部分原因是因为我故意制作的东西对自己更难做到 (这毕竟是一个学习项目) 部分原因是因为我有这种模糊的概念,建立树节点,如我遍历树长远来说并不是一个好主意.

这种方法的问题在于 Treeview 控件不知道上有趣的节点,如"列表"或"web"好的属性,因此它在默认情况下显示此输出:

 

image

这不是很有用的。  这是哪里的 TreeNodeBinding 类帮助。  我可以使用此告诉 Treeview 控件,它应如何解释 XML。  下面是一个示例:

tnb = 新 TreeNodeBinding();
tnb。DataMember ="名单"; // 这是一个网站的 xml 中的标签.
tnb。TargetField ="listid";
tnb。ValueField ="title";
tnb。ToolTipField ="模板";

此绑定告诉树视图,当它发现 <列表> 在 XML 中的节点, 应用 TargetField 的绑定, ValueField 和 ToolTipField。  在可能的应用程序, 这些地图,如下所示:

  • TargetField: 当某人单击节点的值, 这是你会为 SelectedNode.Value。  这并不是与混淆 … …
  • ValueField: 这就是你所想的树视图以显示给用户.
  • ToolTipField: 从您希望作为工具提示的 XML 值.

添加到树视图中的数据绑定,并且 TreeNodebinding 获取输出像这样:

 

image

我更对所有这一切为继续实施项目,并最终把这 Codeplex.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

将文本字段筛选器连接到您的自定义 Web 部件

我想要接收来自 SharePoint 中的文本字段筛选器的信息 2010 到我的自定义 web 部件。  我尝试使用 此 MSDN 文章 作为但文章的基础或者断开或我只是不是跟着它正确.

小小的更多搜索露面 迈克 · 史密斯 MSDN 的贡献 在这里 (http://social.msdn.microsoft.com/forums/en-us/sharepointdevelopment/thread/72F1732A-7F93-441E-8644-2E82BBB153D9).

有很多在外面上可连接的 web 部件的东西但迈克的文章是一样简单,它获取.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

快速、 方便: 发送电子邮件在.net C# 中使用 Gmail SMTP 服务器

这不完全是一个新的主题, 但当我需要这么做, 我发现很多的"为什么不会这项工作对我来说"并没有太多直接的答案. 我希望有人能找到这有用.

下面这段代码将发送电子邮件,使用自己的 gmail 帐户做它, 包括附件。:

使用 System.Net.Mail;
使用 System.Net;

NetworkCredential loginInfo = 新增功能 NetworkCredential("[我的 Gmail ID]", "[我的 Gmail 密码]");
MailMessage msg = 新增功能 MailMessage();
味精。从 = 新增功能 邮件地址("[M Gmail Id]@gmail.com");
味精。To.Add(新增功能 邮件地址("paul.galvin@arcovis.com"));
味精。主题 = "测试 infopath 开发主题";
味精。身体 = "<html><正文><强>一个强烈的信息。</强></正文></html>";
味精。IsBodyHtml = true;

foreach (字符串 恰好 在中 NIPFD。GetAttachmentNamesAndLocations())
{
    味精。Attachments.Add(新增功能 附件(恰好));
} // 添加附件.

SmtpClient 客户端 = 新增功能 SmtpClient("smtp.gmail.com");
客户端。EnableSsl = true;
客户端。UseDefaultCredentials = false;
客户端。凭据 = loginInfo;
客户端。端口 = 587;
客户端。EnableSsl = true;
客户端。发送(味精);

我放慢的几个关键位和其他意见 / 备注:

  • 第一行中创建 loginInfo 对象需要使用 ID 被剥夺了的 gmail "@gmail.com”. 所以, 如果我的 gmail 电子邮件地址 "sharepoint@gmail.com"和我的密码是"xyzzy"然后线看起来就像:

NetworkCredential loginInfo = 新增功能 NetworkCredential("sharepoint", "xyzzy");

  • 我的 gmail 帐户设置为使用 SSL,这不是问题.
  • 还有一些相互矛盾的信息,在那里上要使用什么端口. 我使用端口 587 和它对我来说能正常工作.
  • 以我为例, 我也需要发送附件. NIPFD 对象具有一个方法,知道我的附件在哪里. 它返回一个完全路径 (例如:. "c:\"tempattachment1.jpg. 在我的测试, 我有两个附件和他们都能正常工作.

我使用 visual studio 2008 若要编写此代码.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

Technorati 标签: ,,,