SharePoint 2013 开发——开发并部署第一个APP
本篇我们开始对开发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的更多相关文章
- SharePoint 2013 本地开发解决方案以及远程调试
转自:http://www.cnblogs.com/jianyus/p/3523387.html 在SharePoint开发中,我们需要在部署有SharePoint环境的服务器中开发,这是一件让人很苦 ...
- SharePoint 2013 图文开发系列之列表定义高级篇
转载自 http://www.cnblogs.com/jianyus/p/3484714.html SharePoint列表库,是我们使用过程中最常用的库,下面,我们简单介绍下代码定义自定义列表,主 ...
- SharePoint 2013 图文开发系列之计时器任务
SharePoint的计时器任务,又称TimerJob,由服务里的Timer服务执行,在管理中心管理,是一个类似于Windows任务计划的功能,方便定时执行一些需要的功能,以免影响服务器性能. 在Sh ...
- SharePoint 2013常用开发工具
SharePoint 2013常用开发工具分享 2014-04-01 00:59 by jv9, 589 阅读, 1 评论, 收藏, 编辑 众所周知,一款好的开发工具不仅能提高项目开发效率,而且能够协 ...
- SharePoint 2013 图文开发系列之入门教程
做了SharePoint有三年了,大家经常会问到,你的SharePoint是怎么学的,想想自己的水平,也不过是初级开发罢了.因为,SharePoint开发需要接触的东西太多了,Windows操作系统. ...
- SharePoint 2013 配置开发环境,需安装VS2012插件
原文:SharePoint 2013 配置开发环境,需安装VS2012插件 SharePoint 2013已经安装好了,接下来就是配置开发环境,安装VS2012,但是,装好了以后,发现没有ShareP ...
- SharePoint 2013 图文开发系列之WebPart
这是我们介绍SharePoint开发入门的第一篇,在这一篇里,我们会介绍SharePoint开发的几个关键物理路径,一些开发技巧和最基础的WebPart开发. 开发工具 在SharePoint 201 ...
- SharePoint 2013 图文开发系列之可视化WebPart
有了WebPart开发的基础,再进行可视化WebPart开发,就容易多了.创建和开发过程,两者非常相似,下面,我们简单介绍下可视化WebPart的开发. 1.添加新项目,选择SharePoint 20 ...
- SharePoint 2013 图文开发系列之事件接收器
在SharePoint的使用中,我们经常需要在完成一个动作之后,触发一个事件:比如,我们上传一个文档,但是没有标题,我们需要在上传完成之后,触发一个事件把文件名同步到标题,这就需要用到事件接收器. 此 ...
随机推荐
- entity reference在views中的运用
一个views block可以获取从url过来的nid,某个node的有entity reference字段, 填入一点数据,然后在views里关联一下这个entity reference field ...
- phalcon: Windows 下 Phalcon dev-tools 配置 和 Phpstorm中配置Phalcon 代码提示, phalcon tools的使用
准备: phalcon-devtools包 下载地址: https://github.com/phalcon/phalcon-devtools 解压到wampserver的www目录 (xampp 用 ...
- 双心ping GUI工具1.0
双心ping GUI工具1.0该软件利用WindowsAPI提供了图形界面的ping程序,同时还可以调用DOS下的ping命令.ping成功后自动加入网址列表框及同目录下的列表文件Pinglist.i ...
- java写的简单通用线程池demo
首先声明,代码部分来自网络. 1.入口DabianTest: package com.lbh.myThreadPool; import java.util.ArrayList; import java ...
- CentOS下安装setuptools、pip和virtualenv
已经安装了Python,现在我们可以最终确定完成应用程序生产和部署的基础知识.为此,我们将设立两个最常用的工具:PIP封装经理和virtualenv中的环境管理. 一.安装setuptools set ...
- CentOS中yum安装软件时报错:No package XXX available
yum 安装软件时,报错:No package XXX available. [root@localhost ~]# yum -y install redis Loaded plugins: fast ...
- [saiku] 访问saiku首页的时候前后台处理流程
这篇文章讲述:项目启动后,首次访问SAIKU的登录页,前后台分别做了什么处理 (1) 访问的到底是什么页面? 浏览器输入:localhost:8080 啪一回车 根据web访问的尿性,访问的是 ind ...
- IDE显示无法打开源文件时解决方案
解决方法:加上具体地址信息将 #include <qwidgetresizehandler_p.h> 改为 #include <C:\Users\INnoVation\Deskt ...
- ARM指令集(上)
ADuC702x可以用两套指令集:ARM指令集和Thumb指令集.本小节介绍ARM指令集.在介绍ARM指令集之前,先介绍指令的格式. A.2.1 指令格式 (1)基本格式 ...
- 阮一峰:RSA算法原理(一)
今天看到一篇好文章,关于加密算法,收藏了觉得不过瘾,还是自己贴一遍,也能加深一下印象. 原文链接:http://www.ruanyifeng.com/blog/2013/06/rsa_algorith ...