ProjectTemplateLink 元素(Visual Studio 模板)

若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档。 指定多项目模板中一个项目的 .vstemplate 文件的路径。   语法

特性和元素 以下各部分描述了特性、子元素和父元素。 特性 特性 描述 ProjectName 可选特性。 指定多项目模板中每一个项目的名称。 新项目对话框中不能向单个项目分配名称。 CopyParameters 使主要组模板中的所有变量可复制到每个链接模板。 链接模板中的参数具有前缀 "$ext_*$"。 例如,如果在父组模板参数$projectname$具有值exampleproject1 则轮到,当模板链接获取又要执行,它将获取参数$ext_projectname$,这是一份$projectname$父组模板中的参数。 这使链接模板能够共享一些只能在父组模板中方便地创建的公用参数。 此特性为可选特性,未包含此特性时,它将自动默认为 false。 在 Visual Studio 2013 Update 2 中引入。 若要引用正确的产品版本,请参阅引用程序集提供的 Visual Studio 2013 SDK Update 2。 父元素 元素 描述 ProjectCollection 指定多项目模板的组织和内容。 SolutionFolder 对多项目模板中的项目进行分组。   文本值 需要一个文本值。 此文本指定模板的 .vstemplate 文件的路径。     多项目模板用作两个或多个项目的容器。 ProjectTemplateLink 元素用于指定模板中一个项目的 .vstemplate 文件的位置。 对于多项目模板中的每个项目,此模板的 .vstemplate 文件中都含有一个对应的 ProjectTemplateLink 元素。 有关多项目模板的详细信息,请参阅如何︰ 创建多项目模板。   此示例演示一个简单的多项目 .vstemplate 根文件。 在此示例中,模板包含两个项目:My Windows Application 和 My Class Library。ProjectName 元素的 ProjectTemplateLink 特性可为 Visual Studio 设置要分配给此项目的名称。 如果不存在 ProjectName 特性,则会使用 .vstemplate 文件的名称作为项目名称。

  from:https://msdn.microsoft.com/zh-cn/library/ms171398.aspx

龙生   02 Jun 2018
View Details

vs多项目模板及add-in开发

本文分2部分 第一为自定义多项目模板 第二为vs add-in开发 效果图 1.自定义模板 2. 工具菜单 3.窗口 4.工程 5.文件 …     一. 多项目模板 单项目模板做起来很简单 选中一个项目在文件一栏中选中导出模板 然后选择项目模板 在最后一项向导会给出你的输出路径,一般都是系统的用户文档路径+\Visual Studio 2010\My Exported Templates 在对应目录下会生成你对应的项目模板压缩包 我们生成2个项目的模板文件 然后做一个多项目模板 我们解压2个模板文件并且放进一个新建的名称为MaoyaTemplates的文件夹 剪切到Visual Studio 2010\Templates\ProjectTemplates路径下 新建模板文件MyTemplate.vstemplate 根据要定义的模板内容 修改文件 然后将整个文件夹压缩成zip文件即可 在TemplateData可以定义一些自己需要的信息 例如icon定义你的模板图标 把图标文件放在相对路径即可 然后重新打开vs 即可看到刚才作成的模板 打开以后就是定义的2个demo工程 相当简单 这样就不用每次来新项目都去copy代码了 二 vs插件 概念性的东西可以参考 http://msdn.microsoft.com/zh-cn/library/bb384200.aspx vs插件可以帮助或者优化你在vs开发过程的大部分窗口 它可以针对文件 针对项目 针对窗口 甚至针对不同的后缀做不同的处理 下面图文+代码介绍开发步骤(vs2010) 选择插件项目 进入向导根据自己的场景选择即可 中间向导过程略过 最后一步 完成向导后 默认工程框架如下 最关键的就是connect.cs文件 Connect 继承了2个类 IDTExtensibility2, IDTCommandTarget IDTExtensibility2 包含在实现接口时用作事件的方法。 每当发生影响某个外接程序的事件时(如加载或卸载该外接程序时)以及对该外接程序进行任何更改时,Visual Studio 都会调用这些方法。 IDTCommandTarget 接口使开发者得以在环境中实现命名命令。 并且以定义命令状态或执行命令。 每个方法的描述 中文版可以参考msdn http://msdn.microsoft.com/zh-cn/library/extensibility.idtextensibility2.aspx http://msdn.microsoft.com/zh-cn/library/envdte.idtcommandtarget.aspx 其中我们作为入门开发 需要关注得的是 OnConnection 为IDTExtensibility2的 main 方法,这是因为每次加载外接程序时都会调用该方法。 该方法为外接程序在加载时的入口点,因此可以将要在外接程序启动时运行的任何代码放置在此处(或调用任何其他函数)。 1 2 3 4 5 6 void OnConnection(     Object Application,     ext_ConnectMode ConnectMode,     Object […]

龙生   02 Jun 2018
View Details

ASP.NET MVC中Autofac实现的自动注入模式

熟悉IoC容器的都知道,在开发过程中,最郁闷的莫过于当你新增一个Service时,你需要对该Service进行注册,有的是使用代码注入,有的是XML配置注入,不管是哪种类型的注入,经常会出现开发人员忘记注入的情况, 如果你的页面是直接发送请求的,那么会得到类似于如下页面的错误:   <- _<-   如果该服务是用于AJAX请求实用的,那么你就悲剧了,因为页面只是没反应,只有查看错误日志了。   于是我试着去想办法去避免每次的服务都需要注入,而是系统自动注入。   红色线条框住的地方就是自动注入的代码实现。很高兴Autofac提供一个RegisterAssemblyTypes方法。它回去扫描所有的dll并把每个类注册为它所实现的接口。。。。 既然能够自动注入,那么接口和类的定义一定要有一定的规律。 从上面的代码可以看到baseType这个变量,它是IDependency接口的类型。 IDependency接口如下:   其他任何的接口都需要继承这个接口,例如我们定义一个接口IModelCar:   IModelCar的实现类:     自动注入原理说明:       首先我们去找到所有Dll,再去找到实现了IDependency接口的类,然后使用RegisterAssemblyTypes进行注入。   在Controller中调用试试:   可以看到_carmodel解析后为ModelCar的实例。。    Demo下载: https://github.com/nicholaspei/MvcApplication5   from: https://www.cnblogs.com/n-pei/archive/2013/01/24/2875674.html

龙生   01 Jun 2018
View Details

Chrome如何清除DNS缓存

      Chrome浏览器有自己的DNS缓存,如何不重启Chrome浏览器,就可以清除DNS缓存呢?  查看Chome浏览器的DNS缓存 在地址栏中输入: chrome://dns,就可以查看Chome的DNS缓存了。  清空电脑的DNS缓存 按"Win+R"系统热键打开"运行"窗口,输入"ipconfig /flushdns"命令后按回车,就可以清空电脑的DNS缓存。  清除Chrome浏览器的DNS缓存 在地址栏中输入: chrome://net-internals/#dns,然后点"Clear host cache"按钮。  清除套接字缓存 在地址栏中输入: chrome://net-internals/#sockets,然后点"Clear idle sockets"按钮和"Flush socket pools"按钮。  清除浏览缓存 有时候还需要清除浏览缓存。在地址栏中输入: chrome://settings/clearBrowserData,选择"浏览记录"和"缓存的图片和文件"两项内容,点"清除浏览缓存"按钮。  开启新的隐身窗口 开启新的隐身窗口后,新的DNS映射就会立即生效。 强制刷新页面 强制刷新页面,也会更新DNS。参考下面经验"Chrome浏览器如何强制刷新页面(不使用缓存)?",强制刷新页面。 from:https://jingyan.baidu.com/article/c275f6ba0a4264e33d7567b4.html

龙生   31 May 2018
View Details

Linux下压缩某个文件夹命令

tar -zcvf /home/xahot.tar.gz /xahot tar -zcvf 打包后生成的文件名全路径 要打包的目录 例子:把/xahot文件夹打包后生成一个/home/xahot.tar.gz的文件。 zip 压缩方法: 压缩当前的文件夹 zip -r ./xahot.zip ./* -r表示递归 zip [参数] [打包后的文件名] [打包的目录路径] 解压 unzip xahot.zip 不解释 linux zip命令的基本用法是: linux zip命令参数列表: -a 将文件转成ASCII模式 -F 尝试修复损坏的压缩文件 -h 显示帮助界面 -m 将文件压缩之后,删除源文件 -n 特定字符串 不压缩具有特定字尾字符串的文件 -o 将压缩文件内的所有文件的最新变动时间设为压缩时候的时间 -q 安静模式,在压缩的时候不显示指令的执行过程 -r 将指定的目录下的所有子目录以及文件一起处理 -S 包含系统文件和隐含文件(S是大写) -t 日期 把压缩文件的最后修改日期设为指定的日期,日期格式为mmddyyyy 举例: 将/home/wwwroot/xahot/ 这个目录下所有文件和文件夹打包为当前目录下的xahot.zip zip –q –r xahot.zip /home/wwwroot/xahot 上面的命令操作是将绝对地址的文件及文件夹进行压缩.以下给出压缩相对路径目录 比如目前在Bliux这个目录下,执行以下操作可以达到以上同样的效果. zip –q –r xahot.zip xahot 比如现在我的xahot目录下,我操作的zip压缩命令是 zip –q –r xahot.zip * 以上是在安静模式下进行的,而且包含系统文件和隐含文件 ////////////////////////////////////////////////////////// unzip语 法: unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目 录>][-x <文件>] 或 unzip [-Z] 补充说明:unzip为.zip压缩文件的解压缩程序。 unzip参 数: -c […]

龙生   31 May 2018
View Details

Git 爆任意代码执行漏洞,所有使用者都受影响

Git 由于在处理子模块代码库的设置档案存在漏洞,导致开发者可能遭受任代码执行攻击,多数代码托管服务皆已设置拒绝有问题的代码储存库,但建议使用者尽快更新,避免不必要的风险。 Microsoft Visual Studio 团队服务项目经理 Edward Thomson May 在 DevOps 博客中提到,Git 社区最近发现 Git 存在一个漏洞,允许黑客执行任意代码。 他敦促开发人员尽快更新客户端应用程序。 微软还采取了进一步措施,防止恶意代码库被推入微软的 VSTS(Visual Studio Team Services)。 此代码是 CVE 2018-11235 中的一个安全漏洞。 当用户在恶意代码库中操作时,他们可能会受到任意代码执行攻击。 远程代码存储库包含子模块定义和数据,它们作为文件夹捆绑在一起并提交给父代码存储库。 当这个代码仓库被来回复制时,Git 最初会将父仓库放到工作目录中,然后准备复制子模块。 但是,Git 稍后会发现它不需要复制子模块,因为子模块之前已经提交给父存储库,它也被写入工作目录,这个子模块已经存在于磁盘上。 因此,Git 可以跳过抓取文件的步骤,并直接在磁盘上的工作目录中使用子模块。 但是,并非所有文件都可以被复制。 当客户端复制代码库时,无法从服务器获取重要的配置。 这包括 .git 或配置文件的内容。 另外,在 Git 工作流中的特定位置执行的钩子(如Git)将在将文件写入工作目录时执行 Post-checkout 钩子。 不应该从远程服务器复制配置文件的一个重要原因就是,远程服务器可能提供由 Git 执行的恶意代码。 CVE 2018-11235 的漏洞正是犯了这个错误,所以 Git 有子模块来设置漏洞。 子模块存储库提交给父存储库,并且从未实际复制过。 子模块存储库中可能存在已配置的挂钩。 当用户再次出现时,恶意的父库会被精心设计。 将写入工作目录,然后 Git 读取子模块,将这些子模块写入工作目录,最后一步执行子模块存储库中的任何 Post-checkout 挂钩。 为了解决这个问题,Git 客户端现在将更仔细地检查子文件夹文件夹名称。 包含现在非法的名称,并且它们不能是符号链接,因此这些文件实际上必须存在于 .git 中,而不能位于工作目录中。 Edward ThomsonMay 提到,Git,VSTS 和大多数其他代码托管服务现在拒绝使用这些子模块配置的存储库来保护尚未更新的 Git 客户端。 Git 2.17.1 和 Windows 的 2.17.1 客户端软件版本已经发布,微软希望开发人员尽快更新。 整理自:iThome from:https://www.oschina.net/news/96614/git-flaw

龙生   31 May 2018
View Details

apache httpd服务器403 forbidden的问题

一、问题描述 在apache2的httpd配置中,很多情况都会出现403。 刚安装好httpd服务,当然是不会有403的问题了。主要是修改了一些配置后出现,问题描述如下: 修改了DocumentRoot目录指向后,站点出现403错误。 设置了虚拟主机目录也可能导致403。 apache的httpd服务成功启动,看起来都很正常,却没有权限访问 日志出现: access to / denied (filesystem path '/srv/lxyproject/wsgi/django.wsgi') because search permissions are missing on a component of the path 设置虚拟目录后,错误日志出现:client denied by server configuration: /srv/lxyproject/wsgi/django.wsgi 二、分析问题及方案 下面一步步解决问题时注意错误日志内容。ok,开始。 1、httpd.conf中目录配置文件 如果显示更改了DocumentRoot,比如改为 "/usr/local/site/test" 。site目录和test目录是通过使用mkdir建立的,然后在test目录下放一个index.html。这种情况应该查看httpd.conf中配置。 你的<Directory "/usr/local/site/test">一定要和DocumentRoot一致,因为这段Directory是apache对该目录访问权限的设置,只有设置正确的目录,DocumentRoot才会生效。

2、目录访问权限 第一步配置正确还是出现403,检查目录配置<Directory "/usr/local/site/test">中是否有Deny from all。有则所有访问都会被拒绝,当然403了。 可以设置为Allow from all或者Require all granted来处理。 不要修改<Directory />根目录中Deny from all。 3、目录权限 如果至此还是403,可能是网站目录的权限问题。 apache要求目录具有执行权限,也就是x,要注意的是,你的目录树都应该拥有这些权限。 假如你的目录是/usr/local/site/test,那么要保证/usr,/usr/local,/usr/local/site,/usr/local/site/test这四个层级的目录都是755权限。

我犯过一个错就是只设置了最后一级目录权限,没有设置上级目录权限,导致403。 4、 虚拟目录 【这个问题我没遇到过,因为我没这样写过,网上资料这么写,可作为参考】 如果设置的是虚拟目录,那么你需要在httpd.conf中定义一个虚拟目录,而且像极了如下的片段:

如果是这一种情况,而且你写得类似我上面的代码,三处folder都是一样一样的,那绝对会是403!怎么解决呢,就是把跟在Alias后面斜杠后面的那串改了,改成什么,不要和虚拟目录的文件夹同名就好,然后我就可以用改过后的虚拟目录访问了,当然,改文件夹也行,只要你不怕麻烦,只要Alias后面的虚拟目录定义字符(红色)和实际文件夹名(黑色)不相同就OK。 5、selinux的问题 如果依然是403,那就是selinux在作怪了,于是,你可以把你的目录进行一下selinux权限设置。 今天我遇到的就是这个问题了。

网上资料说不过,这一步大多不会发生。但我的问题确实是,可能跟系统有关,具体原理还不是很懂。 6、wsgi的问题 我的虚拟主机配置为:

我访问 log报错:

解决办法: 修改<Directory /srv/lxyproject/wsgi/>中Allow from all为:Require all granted。 这个问题是因为版本的原因, 我的httpd版本为:

而2.3以下版本用Allow from all,2.3及以上版本为Require all granted。

[…]

龙生   28 May 2018
View Details

Apache结合mod_dav_svn和mod_authz_svn打造SVN服务器

Apache结合mod_dav_svn和mod_authz_svn打造SVN服务器 制作SVN服务器的软件和工具有很多,比如每个SVN都有的svnserve,以及图形化界面超容易使用的VisualSVN Server。但是,现在既然有Apache服务器,那就直接用就是了,而且还可以使用Web浏览目录。 首先,前往这里下载对应的SVN发行包,我下载的是Win32Svn。里面自带mod_dav_svn.so与mod_authz_svn.so。使用与Apache2.2,其他版本请自行测试。 然后,把Win32Svn解压缩,如d:\Subversion,然后在系统环境变量中加上d:\Subversion。 接着,把mod_dav_svn.so与mod_authz_svn.so拷贝到apache的modules目录。 修改httpd.conf,把以下两行前面的“#”注释去掉: LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule dav_module modules/mod_dav.so 在所有LoadModule的最后加上下面两行: LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so 假设使用d:\svn作为仓库的地址,则在httpd.conf或对应虚拟主机的配置中加上: #SVN START <Location /svn> DAV svn SVNParentPath D:\svn AuthType Basic AuthName "blog.creke.net SVN" AuthUserFile D:\svn\.htpasswd AuthzSVNAccessFile D:\svn\.ht_svn_authz Require valid-user </Location> #SVN END 具体的配置参数可以查看这里和这里。 其中的.htpasswd是用户密码文件,与apache的一样。 .ht_svn_authz是访问控制文件,可以在svnadmin create后,在conf目录下authz.conf找到该文件带有注释的原型。 如果在blog.creke.net的虚拟主机中加上以上配置,再执行“svnadmin create d:\svn\rep1”后,我们访问http://blog.creke.net/svn/rep1时,就会访问到对应的rep1的仓库。 使用这个方法,apache就会兼做svn服务器,就不需要单独启动svnserve了。   from:http://blog.creke.net/788.html

龙生   28 May 2018
View Details

从2.2升级到2.4

为了帮助人们升级,我们维护一份描述对现有Apache HTTP Server用户至关重要的信息的文档。这些只是简要说明,您应该能够在新功能文档或src/CHANGES文件中找到更多信息。应用程序和模块开发人员可以在API更新概述中找到API更改的摘要。 本文档描述了服务器行为的变化,这些变化可能要求您更改配置或使用服务器以继续使用2.4,就像您当前使用2.2一样。要利用2.4中的新功能,请参阅新功能文档。 本文档仅描述了从2.2到2.4的变化。如果您从2.0版升级,则还应该查阅升级文档2.0至2.2。 编译时配置更改 运行时配置更改 其他变化 第三方模块 升级时常见的问题 也可以看看 Apache HTTP Server 2.4中的新功能概述 注释 编译时配置更改 编译过程非常类似于2.2版中使用的过程。大多数情况下,您的旧configure命令行(可以在build/config.nice安装的服务器目录中找到)可以使用。默认设置有一些变化。一些细节的变化: 这些模块已被删除:mod_authn_default,mod_authz_default,mod_mem_cache。如果您在2.2中使用mod_mem_cache,请参阅mod_cache_disk2.4。 所有的负载平衡实现已经被移动到独立的,独立的mod_proxy子模块,例如 mod_lbmethod_bybusyness。您可能需要构建并加载配置使用的任何这些内容。 BeOS,TPF以及A / UX,Next和Tandem等较早的平台都已取消平台支持。无论如何,这些被认为是破碎的。 配置:动态模块(DSO)是默认生成的 配置:默认情况下,只加载一组基本的模块。其他LoadModule指令在配置文件中被注释掉。 配置:默认情况下,“最”模块集建成 配置:“真正的”模块集将开发者模块添加到“全部”集 运行时配置更改 授权配置和其他次要配置更改发生了重大变化,可能需要在使用2.4配置文件之前对其进行更改。 授权 任何使用授权的配置文件都可能需要更改。 您应该查看身份验证,授权和访问控制Howto,尤其是Beyond仅授权部分,该部分 解释了控制授权指令应用顺序的新机制。 控制授权模块在与认证用户不匹配时如何响应的指令已被删除:这包括AuthzLDAPAuthoritative,AuthzDBDAuthoritative,AuthzDBMAuthoritative,AuthzGroupFileAuthoritative,AuthzUserAuthoritative和AuthzOwnerAuthoritative。这些指令已经被换成了更具表现力RequireAny, RequireNone和 RequireAll。 如果您使用mod_authz_dbm,则必须移植您的配置以Require dbm-group …代替使用Require group …。 访问控制 在2.2的基础上,客户端的主机名,IP地址,客户端请求的其他特性的访问控制使用的指示做Order,Allow,Deny,和Satisfy。 在2.4中,这种访问控制与使用新模块的其他授权检查相同 mod_authz_host。旧的访问控制成语应该被新的认证机制所取代,尽管为了与旧的配置兼容,mod_access_compat提供了新的模块。 混合旧的和新的指令 混合旧指令一样Order,Allow或Deny以新的希望 Require在技术上是可行的,但不鼓励。mod_access_compat是为支持仅包含旧指令的配置而创建的,以促进2.4升级。请查看下面的示例以更好地了解可能出现的问题。 以下是一些新旧方法可用于执行相同访问控制的示例。 在这个例子中,没有认证,所有请求都被拒绝。 2.2配置:

2.4配置:

在这个例子中,没有认证,所有的请求都是允许的。 2.2配置:

2.4配置:

在以下示例中,不存在身份验证,并且example.org域中的所有主机都被允许访问; 所有其他主机都被拒绝访问。 2.2配置:

2.4配置:

在以下示例中,混合旧指令和新指令会导致意外的结果。 混合旧的和新的指令:不按预期工作

为什么即使配置似乎允许httpd拒绝访问服务器状态?因为mod_access_compat指令优先mod_authz_host于此配置 合并方案中的指令。 这个例子反过来按预期工作: 混合旧的和新的指令:按预期工作

因此,即使混音配置仍然可行,请在升级时尽量避免使用它:或者保留旧的指令,然后在后续阶段迁移到新的指令,或者只是批量迁移所有的指令。 在许多具有身份验证的配置中,其值为ALLSatisfy的缺省值,因此 省略了仅禁用基于主机的访问控制的片段: 2.2配置:

2.4配置:

在身份验证和访问控制有意义结合的配置中,应该迁移访问控制指令。这个例子允许满足两个标准的请求: 2.2配置:

2.4配置:

在身份验证和访问控制有意义结合的配置中,应该迁移访问控制指令。此示例允许符合以下任一条件的请求 2.2配置:

2.4配置:

其他配置更改 如下所述,对于特定配置可能需要其他一些小调整。 MaxRequestsPerChild已更名为 MaxConnectionsPerChild,更准确地描述了它的功能。旧名称仍然受支持。 MaxClients已被重新命名为 MaxRequestWorkers,它更准确地描述了它的功能。对于异步MPM,例如 event,最大客户端数量不等于工作线程数量。旧名称仍然受支持。 该DefaultType 指令不再具有任何效果,除非发出警告,否则使用其他值 none。您需要使用其他配置设置在2.4中进行替换。 AllowOverride现在默认为None。 […]

龙生   28 May 2018
View Details
1 187 188 189 432