本篇我们开始对开发APP应用程序进行了解。

本篇基于本地SharePoint环境(如果是Office 365的话会方便许多),需要配置一下APP的环境,具体参照霖雨大神的Blog

开发APP的第一步,创建一个开发者网站集,操作方法跟我们创建其他的网站集几乎一样,选择好开发者网站的模版即可,我将在我的81端口下的Web应用程序下创建。

在管理中心选择应用程序管理->创建网站集,选择81端口下的Web应用程序,模版选择开发人员网站,点击创建。

接下来我们开始创建我们第一个APP,是的,Hello World,它没有什么实际的功能所以没有Bug,只是让我们对整个过程有个大致地了解和掌握。

打开Visual Studio 2015 RC(新装的系统,所以VS也安装了最新的版本,感受感受),新建项目,选择Office/SharePoint分类下的应用程序,选择SharePoint应用程序进行创建。

点击确定按钮之后,在弹出的调试网站位置填写我们刚创建的开发人员网站的URL,选择SharePoint托管,点击下一步会提示输入凭据进行身份验证,输入完后点击确定,接下来选择应用版本,是2013还是O365,我们这里选择SharePoint 2013,点击完成。

项目创建好之后结构如下图所示。

我们可以看到创建出来的APP的ASPX页面并没有后台页面文件,因为APP是不支持服务端代码的。

我们定位到主内容部分(PlaceHolderMain),它下面有一个DIV,上面注释了“运行该应用程序时会将以下内容替换为用户名 - 请参阅 App.js”,在Scripts文件夹中可以看到APP.js这个文件:

'use strict';

ExecuteOrDelayUntilScriptLoaded(initializePage, "sp.js");

function initializePage()
{
var context = SP.ClientContext.get_current();
var user = context.get_web().get_currentUser(); // 此代码在 DOM 准备就绪时运行,并且可以创建使用 SharePoint 对象模型所需的上下文对象
$(document).ready(function () {
getUserName();
}); // 此函数准备、加载然后执行 SharePoint 查询以获取当前用户信息
function getUserName() {
context.load(user);
context.executeQueryAsync(onGetUserNameSuccess, onGetUserNameFail);
} // 如果上述调用成功,则执行此函数
// 此函数将“message”元素的内容替换为用户名
function onGetUserNameSuccess() {
$('#message').text('Hello ' + user.get_title());
} // 将在上述调用失败时执行此函数
function onGetUserNameFail(sender, args) {
alert('Failed to get user name. Error:' + args.get_message());
}
}

它做了一个简单的用户名的查询,并显示到页面的P标签上。

本篇中我们只想显示我们的Hello,不对对象模型做过多介绍。在div节点的下面添加一个P标签,文字内容填写“This is our first SharePoint app!”。完成之后Main中的代码如下所示:

<div>
<p id="message">
<!-- 运行该应用程序时会将以下内容替换为用户名 - 请参阅 App.js -->
initializing...
</p>
</div>
<p>This is our first sharepoint APP!</p>

在运行我们第一个APP之前,我们先来了解一下SharePoint应用程序项目模版的结构:

Features文件夹

跟以往的版本一样,内有清单文件和Feature定义文件,用来定义SharePoint的Feature。

Package文件夹

全新的SharePoint 2013应用程序包设计器,跟Feature设计器很相似,包含一个manifest清单文件定义SharePoint应用程序的细节,实际上跟以往的版本也并无太大差异。

Content文件夹

包含默认的APP.css样式文件和一个清单定义文件。新的样式文件等内容可以添加到此处。

Images文件夹

顾名思义,用来存放图片。

Pages和Scripts文件夹

同样,看名即懂,用来存放页面和脚本文件。

最后两个是AppManifest.xml和packages.config文件。其中,双击AppManifest.xml文件会打开一个设计器,用来配置APP。

回到之前,我们完成的Hello World应用程序,按下F5进行部署,会收到如下的错误:

因为我们使用的是场用户(系统账户),SharePoint不允许使用系统账户进行APP的安装和卸载操作。在域控中新建一个用户,将该用户添加到开发机的本地管理员组,并添加到场管理员组。

这个问题困扰了我一整天,Google到的解决方案都是以域内服务器为基础的,但是我的SharePoint在VM中,而Visual Studio在本机域外,这里有一篇很详细的排错过程,如果域内服务器开发遇到了问题可以进行参照

很遗憾域外部署如何处理我还没有找到办法,后来仔细回味一下也许是行不通的吧,按照上面的排错过程在SharePoint域内服务器开发是可以部署的,F5启动浏览器之后,页面无法显示,或者显示404 Not Found,这个或许由于SharePoint APP开发环境没有配置正确,我在第一次配置的时候不小心将CNAME指向了AD服务器而不是SP的服务器。仔细检查一下配置,修正后再次按F5就可以看到我们开发的APP的页面了,同样只在域内服务器可以访问,我在本机域外访问就提示该页无法显示。

注:本篇只是从技术角度阐述实现APP的一种方式,并不完全适用于实际应用,如应用程序目录等内容本篇并没有提及。

鉴于本地服务器的做起来略麻烦,下一篇可能会考虑基于O365啦:)



SharePoint 2013 开发——开发并部署第一个APP的更多相关文章

  1. SharePoint 2013 本地开发解决方案以及远程调试

    转自:http://www.cnblogs.com/jianyus/p/3523387.html 在SharePoint开发中,我们需要在部署有SharePoint环境的服务器中开发,这是一件让人很苦 ...

  2. SharePoint 2013 图文开发系列之列表定义高级篇

    转载自  http://www.cnblogs.com/jianyus/p/3484714.html SharePoint列表库,是我们使用过程中最常用的库,下面,我们简单介绍下代码定义自定义列表,主 ...

  3. SharePoint 2013 图文开发系列之计时器任务

    SharePoint的计时器任务,又称TimerJob,由服务里的Timer服务执行,在管理中心管理,是一个类似于Windows任务计划的功能,方便定时执行一些需要的功能,以免影响服务器性能. 在Sh ...

  4. SharePoint 2013常用开发工具

    SharePoint 2013常用开发工具分享 2014-04-01 00:59 by jv9, 589 阅读, 1 评论, 收藏, 编辑 众所周知,一款好的开发工具不仅能提高项目开发效率,而且能够协 ...

  5. SharePoint 2013 图文开发系列之入门教程

    做了SharePoint有三年了,大家经常会问到,你的SharePoint是怎么学的,想想自己的水平,也不过是初级开发罢了.因为,SharePoint开发需要接触的东西太多了,Windows操作系统. ...

  6. SharePoint 2013 配置开发环境,需安装VS2012插件

    原文:SharePoint 2013 配置开发环境,需安装VS2012插件 SharePoint 2013已经安装好了,接下来就是配置开发环境,安装VS2012,但是,装好了以后,发现没有ShareP ...

  7. SharePoint 2013 图文开发系列之WebPart

    这是我们介绍SharePoint开发入门的第一篇,在这一篇里,我们会介绍SharePoint开发的几个关键物理路径,一些开发技巧和最基础的WebPart开发. 开发工具 在SharePoint 201 ...

  8. SharePoint 2013 图文开发系列之可视化WebPart

    有了WebPart开发的基础,再进行可视化WebPart开发,就容易多了.创建和开发过程,两者非常相似,下面,我们简单介绍下可视化WebPart的开发. 1.添加新项目,选择SharePoint 20 ...

  9. SharePoint 2013 图文开发系列之事件接收器

    在SharePoint的使用中,我们经常需要在完成一个动作之后,触发一个事件:比如,我们上传一个文档,但是没有标题,我们需要在上传完成之后,触发一个事件把文件名同步到标题,这就需要用到事件接收器. 此 ...

随机推荐

  1. phalcon: 资源文件管 理 引入css,js

    <?php class IndexController extends Phalcon\Mvc\Controller { public function index() { //添加本地css资 ...

  2. zabbix实现原理及架构详解

    想要用好zabbix进行监控,那么我们首要需要了解下zabbix这个软件的实现原理及它的架构.建议多阅读官方文档. 一.总体上zabbix的整体架构如下图所示: 重要组件说明: 1)zabbix se ...

  3. java 异常2

    自定义异常类: import java.util.Scanner; /** * Created by lenovo on 2016/8/12. */ class NoMoneyException ex ...

  4. 队列中使用Database Driver

    队列允许你将一个耗时的任务进行延迟处理. 首先要在.evn文件中配置 QUEUE_DRIVER=database 要使用 database 这个队列驱动的话,则需要创建一个数据表来记住任务,使用命令: ...

  5. AndroidManifest.xml清单文件要点

    AndroidManifest.xml AndroidManifest.xml清单文件通常包括如下内容: 应用程序的包名,该包名作为该应用的唯一标识. 应用包含的组件,如Activity,Servic ...

  6. JSF框架认识

    JSF框架 编辑 JavaServer Faces (JSF) 是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准).它提供了 ...

  7. servlet的配置和上下文

    一.Servlet配置对象(ServletConfig):Servlet初始化时,容器调用其init(ServletConfig)方法,传递该对象. 1.获得对象方法: (1).直接使用getServ ...

  8. mouseenter和mouseout中间的时间控制

    为了防止鼠标快速滑过div而加的时间限制: 在看延迟绑定时候看到,这也算是延迟绑定了?:(20130909) <!DOCTYPE html> <html lang="en& ...

  9. SAP采购订单审批记录增强

    采购订单审核函数: BAPI_PO_RELEASE 结尾加上 ENHANCEMENT ZME28_PO. "active version DATA:LS_EKKO TYPE EKKO. DA ...

  10. Vim经典讲解

    http://blog.csdn.net/niushuai666/article/details/7275406