如何通过PowerShell在Visual Studio的Post-build中预热SharePoint站点

问题现象

Visual Studio在开发SharePoint的时候,发布部署包后,首次打开及调试站点页面的时候会非常的慢

?

解决方案

使用PowerShell脚本,加载SharePoint插件后遍历所有的网站集,用以模拟用户自动点击页面

?

具体步骤

  1. 制作"64位版本"的PowerShell

由于SharePoint运行的是64位的PowerShell,而Visual Studio的Post-build event中默认运行的32位的PowerShell,需要找到一个变通的方式

?

新建一个Console程序,其中代码如下


using System;

using System.Diagnostics;

?

namespace ConsoleApplicationExample

{

class Program

{

static int Main(string[] args)

{

Process process = Process.Start("PowerShell.exe", String.Join(" ", args));

process.WaitForExit();

return process.ExitCode;

}

}

}

?

同时找到VS目录下64位的CMD,运行如下命令生成PowerShell的64位版本


csc Path to cs file\Program.cs /platform:x64

?

到目录c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC中找到Program.exe,并重命名为PowerShell64.exe

?

  1. 制作遍历脚本

机器上运行PowerShell需要开启权限,运行以下脚本(注意:需要开启64位的权限)


%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

%SystemRoot%\sysWOW64\WindowsPowerShell\v1.0\powershell.exe

?


Set-ExecutionPolicy Unrestricted

?

在PowerShell中操作SharePoint对象(遍历网站)

?


if ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null )

{

Add-PSSnapin Microsoft.SharePoint.PowerShell

}

?

function Get-WebPage([string]$url)

{

$wc = new-object net.webclient;

$wc.credentials = [System.Net.CredentialCache]::DefaultCredentials;

$pageContents = $wc.DownloadString($url);

$wc.Dispose();

return $pageContents;

}

?

Get-SPAlternateUrl -Zone Default | foreach-object {

write-host $_.IncomingUrl;

$html = Get-WebPage -url $_.IncomingUrl;

}

?

?

  1. 配置Visual Studio


$(ProjectDir)\PowerShell\PowerShell64.exe -File $(ProjectDir)\PowerShell\warmupAllSharePointSites.ps1

?

?

如何通过PowerShell在Visual Studio的Post-build中预热SharePoint站点

时间: 2024-10-29 04:16:27

如何通过PowerShell在Visual Studio的Post-build中预热SharePoint站点的相关文章

【转】【UML】使用Visual Studio 2010 Team System中的架构师工具(设计与建模)

Lab 1: 应用程序建模 实验目标 这个实验的目的是展示如何在Visual Studio 2010旗舰版中进行应用程序建模.团队中的架构师会通过建模确定应用程序是否满足客户的需求. 你可以创建不同级别的详细模型,并将它们彼此结合.测试然后发布到你的开发计划里. 在这个实验中, 我们将重点放在如何创建一系列简单的系统建模图形上. 每个练习应该在 30分钟内完成. Exercise 1 – 理解用户需求 绘制活动.类以及其他UML图形能帮助架构师清晰辨别客户的习惯.业务规则以及其他需求,从而使设计

如何使用Visual Studio 2010在数据库中生成随机测试数据

测试在项目中是很重要的一个环节,在Visual Studio 2010中,在测试方面已经有很好的支持了,比如有单元测试,负载测试等等.在数据测试的方面,Visual Studio 2010,还支持对数据库进行多种测试,其中一个很好用的功能是能为开发者在测试阶段,大量方便地为数据库生成随机的数据,而且还可以自己指定生成数据的规则,十分方便,这就让在测试过程中,开发者能有更充足的数据样本对项目进行测试.本文则介绍其中的Data Generation数据生成器的使用方法. 1 创建SQL Server

在Visual Studio开发的项目中引用GAC中的dll

Open the windows Run dialog (Windows Key + r) Type C:\Windows\assembly\gac_msil. This is some sort of weird hack that lets you browse your GAC. You can only get to it through the run dialog. Find your assembly and copy its path from the address bar.

Microsoft Visual Studio 2008 在文件中查找 失效的解决方法

1: 暂时的解决办法是,在'在文件中查找'按钮边上的下拉框中输入要查询的东西,然后回车 2: 选择窗口的重置窗口布局.(该方法解决了我的问题,原因分析大概是 弹出的窗口被别的挡住了) 3: 修复Microsoft Visual Studio 2008

Visual Studio扩展与更新中插件被禁用,安装后无法使用

在Visual Studio中的扩展与更新中安装插件后,显示[禁用],重新安装后仍然不能使用,但是VS默认安装的扩展却可以正常使用. 这里需要注意下方显示“当前不允许加载每用户扩展”,点击“启用每用户拓展的加载”,显示如下窗体: 勾选以管理员身份加载每用户扩展,然后重新启动VS,问题解决.

Visual Studio - File Properties (Build Action, Copy to Output Directory)

Ref: MSDN (https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/0c6xyb66(v=vs.100) ) Difference between Build action content and 'Copy to output directory' in Visual Studio Question: In my project in Visual Studio, I hav

Visual Studio 在控制台应用中使用MFC

1:Configuration Properties ->Use of MFC ->Use MFC in a Shared DLL 2.将如下代码粘贴到stdafx.h文件中 #include <afx.h> #include <afxwin.h> // MFC core and standard components #include <afxext.h> // MFC extensions #ifndef _AFX_NO_OLE_SUPPORT #inc

Visual Studio/Eclipse调用 JBoss5中的WebService

1. HelloWebService.java package com.xx.webservices; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; @WebService public class HelloWebService { @WebMethod @WebResult(name="result") p

Visual Studio 2012远程调试中遇到的问题

有的时候开发环境没问题的代码在生产环境中会某些开发环境无法重现的问题,或者需要对生产环境代码进行远程调试该怎么办? Vs已经提供给开发者远程调试的工具 下面简单讲讲该怎么用,前期准备:1.本地登录账户,密码跟远程服务器保持一致(VS2012以前需要,现在我没测试,干脆也搞一样,省得出问题)2.根据服务器系统版本拷贝对应的远程调试工具到服务器然后运行里面的msvsmon.exe 3.本地开启VS,工具->附加进程 注意:限定符这里要填写计算机名,不能填写IP,我填写IP直接报错本地代码跟服务器代码