Category Archives: 日常开发工作

Visual Studio 2017制作离线安装包

Visual Studio 2017开始,不在提供ISO版本,只有一个web installer的exe安装包了,这对于需要在内网安装VS的用户来说很不方便,因为需要自己去制作这个离线安装包了。下面是具体步骤:

  • 下载VS 2017的exe安装文件
  • 确定需要做到离线包里的工作负载(对应英文版的名字是Workload),如果不确定需要装哪些组件,可以运行一下exe安装包,从安装向导的UI里确定一下。完整的workload id列表可以从这个页面查找image

打开命令行窗口,这里我想做的是一个中文的安装包,包含DotNet桌面开发,ASP.NET和DotNet Core这些workload,具体命令如下。这个命令会自动下载所有需要的文件,到本地的c:\vs2017.3,运行完毕后这个文件夹就可以用来做VS的离线安装了。

C:\DelMe>mu_visual_studio_enterprise_2017_version_15.3_x86_x64_11100063.exe --layout C:\vs2017.3 --lang zh-CN --add Microsoft.VisualStudio.Workload.NetWeb Microsoft.VisualStudio.Workload.ManagedDesktop Microsoft.VisualStudio.Workload.NetCoreTools

image

参考文档

  • https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-enterprise https://docs.microsoft.com/en-us/visualstudio/install/create-an-offline-installation-of-visual-studio https://docs.microsoft.com/en-us/visualstudio/install/use-command-line-parameters-to-install-visual-studio

TFS服务器删除搜索组件

升级TFS服务器到TFS 2017以后,发现TFS经常会出现OutOfMemory的错误,排查了一下,罪魁祸首居然是Elastic Search。TFS 2017开始,如果启用代码搜索功能,TFS会在本地装一个Elastic Search来做索引代码。

%IN3Q1[5[`EY9HYAJK]I87Q

这篇博文记录一下在TFS服务器移除搜索服务以及Elastic Search的过程:

  1. 先打开TFS管理控制台,左边选择TFS服务器名字,然后点右边窗口里的删除特性,弹出框里选择Team Foundation搜索服务,点删除

H]251NV2$Q58$5O58%JVQ$G

  1. 删除环境变量SEARCH_ES_INDEX_PATH里定义的文件夹,这会删除所有的Search索引
  2. 删除环境变量SEARCH_ES_INDEX_PATH和ES_HEAP_SIZE
  3. 运行Configure-TFSSearch.ps1 remove,删除Elastic Search

image

Windows Server远程桌面里如何修改密码

如果你楼主一样经常需要远程登陆到windows server去给一些Service账号改密码,一定会发现在远程桌面里,Ctrl-Alt-Del无法调出改密码的窗口,因为这个指定总是被当前的Windows环境捕获了,远程的机器收不到这个命令。其实正确的在Windows Server远程桌面里改密码的姿势是Ctrl-Del-End,具体步骤如下

  1. 远程桌面登陆
  2. 同时按Ctrl-Del-End
  3. 输入当前密码和新密码提交

配置Azure WebApp只能通过https访问

这篇博文记录如何配置Azrue WebApp只允许https访问,非https的请求一律重定向到https。

具体步骤是在web.config里加一个urlrewrite信息,如下所示,需要加在rewrite/rules节点下

<rule name=”Force HTTPS” enabled=”true”>
   <match url=”(.*)” ignoreCase=”false” />
   <conditions>
     <add input=”{HTTPS}” pattern=”off” />
     <add input=”{WARMUP_REQUEST}” pattern=”1″ negate=”true” />
   </conditions>
   <action type=”Redirect” url=”https://{HTTP_HOST}/{R:1}” appendQueryString=”true” redirectType=”Permanent” />
</rule>

Azure WebApp使用反向代理

Azure WebApp有个很赞的功能,就是默认的二级域名自带https证书。这里记录一下用Azure WebApp来反代其他应用的步骤,同时也感谢Herb童鞋提供的技术支持

  1. 在wwwroot的上层目录添加一个名为applicationHost.xdt的文件,内容如下

<?xml version=”1.0″?>
<configuration xmlns:xdt=”http://schemas.microsoft.com/XML-Document-Transform”>
<system.webServer>
<proxy xdt:Transform=”InsertIfMissing” enabled=”true” preserveHostHeader=”false” reverseRewriteHostInResponseHeaders=”false” />
<rewrite>
<allowedServerVariables>
<add name=”HTTP_X_ORIGINAL_HOST” xdt:Transform=”Insert” />
<add name=”HTTP_X_UNPROXIED_URL” xdt:Transform=”Insert” />
<add name=”HTTP_X_ORIGINAL_ACCEPT_ENCODING” xdt:Transform=”Insert” />
<add name=”HTTP_ACCEPT_ENCODING” xdt:Transform=”Insert” />
</allowedServerVariables>
</rewrite>
</system.webServer>
</configuration>

  • 更新web.config文件,增加urlwrite规则

<rule name=”Search” stopProcessing=”true”>
<match url=”^Indexes?(.*)” />
<action type=”Rewrite” url=”http://10.1.0.254/indexes/{R:1}” />
<serverVariables>
<set name=”HTTP_X_UNPROXIED_URL” value=”http://10.1.0.254/indexes/{R:1} />
<set name=”HTTP_X_ORIGINAL_ACCEPT_ENCODING” value=”{HTTP_ACCEPT_ENCODING}” />
<set name=”HTTP_X_ORIGINAL_HOST” value=”{HTTP_HOST}” />
<set name=”HTTP_ACCEPT_ENCODING” value=”” />
</serverVariables>
</rule>

Windows运行多个版本NodeJS的解决方案

在Windows上开发NodeJS项目,有时候会遇到不同的项目依赖不同的NodeJS版本的问题。今天在GitHub上发现了一个工具nvm-windows可以很好的解决Windows上同时有多个NodeJS版本共存的问题,记录一下试用方法

  1. 安装nvm-windows之前首先需要卸载当前机器上已经安装过的所有nodejs版本
  2. 删除下面2个文件夹:C:\Program Files\nodejs和 C:\Users\<user>\AppData\Roaming\npm
  3. 从GitHub上下载最新的nvm-windows安装包
  4. 打开命令行窗口后就可以使用了,先用nvm install安装需要的node版本,然后用nvm use就可以在不同版本间自由切换了。

下面是几个常用的命令

  • nvm install 4.5.0: 在本机上安装4.5.0版本nodejs
  • nvm ls: 查看已经安装所有nodejs的版本
  • nvm use 4.5.0: 使用4.5.0做为当前nodejs版本

Service Fabric SfDevCluster文件夹占用空间过大解决方法

今天突然发现C盘SSD没空间了,查了一下C:\SfDevCluster占用了30G空间,这个是Service Fabric本地开发模拟器的工作目录,详细看了一下,大部分都是log文件占满了空间。搜了一下,可以用下面方法解决

  1. 用管理员身份打开Powershell,CD到C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup文件夹下
  2. 运行下面命令,
  3. .\DevClusterSetup.ps1 -PathToClusterDataRoot D:\SfDevCluster\Data -PathToClusterLogRoot D:\SfDevCluster\Log

注意把D:\SfDevCluster换成你想要放SFCluster的新目录,这个脚本会把当前的cluster停掉并且删除D:\SfDevCluster。新的cluster部署会自动用新的目录。

更新:

有童鞋问直接清理SfDevCluster文件夹的方法,在右下角任务栏里的Service Fabric Cluster Manager右键菜单里,点Reset Local Cluster,就会删除所有的log,并将cluster恢复成默认的状态。

image

ASP.NET Core读取appsettings.json的配置

这边博客记录迁移到ASP.NET Core过程中读取配置文件的变化。在老版本的ASP.NET里,项目的全局配置一般都存在web.config里的appSettings里,只需要用ConfigurationManager.AppSettings[“Foo”]就可以把名为Foo的变量取出来。在ASP.NET Core里,访问配置文件的方式也有了很大变化。但是ASP.NET Core里web.config已经被appsettings.json替换,加上ASP.NET Core里大量用了依赖注入(Dependency Injection),这使得读取配置信息也和之前不一样,新的框架下取配置更加灵活和易于扩展。这里用一个小例子演示如何通过Options.ConfigurationExtensions这个来取得配置。

Continue reading