有很多很棒的工具可以与Subversion集成并做一些非常简洁的事情.我已尝试过其中一些但最终只倾向于定期使用以下内容:
还有什么是你发现与Subversion交互真正创新或有用的东西?
有没有人知道是否有任何本机机制来报告Visual Studio 2008中的整体解决方案构建时间?您可以更改构建冗长报告每个项目的构建倍,讨论在这里或MSBuild的报告总建筑时间,但我想看到这个在IDE跨越包含许多项目的整个解决方案.如果没有创建自定义的前置和后置构建事件,是否有人知道总构建时间是否有任何本机输出?谢谢!
我正在尝试整理一个正则表达式来查找字符串中不存在特定单词的时间.具体来说,我想知道何时不存在"trunk","tags"或"branches"(这是Subversion预提交钩子).基于正则表达式匹配不包含单词答案的字符串,我可以使用负面外观轻松地为一个单词执行此操作:
^((?!trunk).)*$
Run Code Online (Sandbox Code Playgroud)
这是我正在努力的"和"运算符,我似乎无法获得包括其他两个单词在内的组合.
这在.NET中运行正常,只有一个单词:
var exp = new Regex(@"^((?!trunk).)*$");
exp.IsMatch("trunk/blah/blah");
Run Code Online (Sandbox Code Playgroud)
它将返回false,因为它当前或如果第二行路径中不存在"trunk",则返回true.
我在这里错过了什么?
我正在从MSBuild命令行将Web应用程序包部署到IIS6上的MSDepSvc,使用基本身份验证可以正常使用以下命令:
MSBuild.exe Web.csproj
/p:Configuration=Debug
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=http://[server name]/MsDeployAgentService
/p:DeployIisAppPath=DeploymentTestProject
/p:MSDeployPublishMethod=RemoteAgent
/p:CreatePackageOnPublish=True
/p:username=***
/p:password=***
Run Code Online (Sandbox Code Playgroud)
但是,我真正想做的是删除用户名和密码参数,然后以当前用户的身份回退到集成的auth.此命令将进入构建服务器,我不希望具有对目标环境(MsDepSvc所需)的管理员权限的帐户的纯文本凭据可见.我无法找到有关如何执行此操作的任何文档,并且当我尝试发布时,丢弃凭据返回401未经授权.
令我特别沮丧的是,我可以愉快地在带有集成身份验证的软件包中运行deploy命令(只是不包含凭据),我似乎无法从MSBuild命令行运行它.我正在尝试封装包并将进程部署到单个命令中而不编辑构建文件,这是目前唯一的方法.
有什么想法吗?
编辑 在与Sayed进行一些讨论并深入了解命令行输出后,执行上面的MSBuild命令(没有用户名和密码参数)后,将调用以下MSDeploy命令:
msdeploy.exe
-source:package='[project path]\Web\obj\Debug\Package\Web.zip'
-dest:auto,ComputerName='http://[server]/MsDeployAgentService',UserName='***',IncludeAcls='False',AuthType='NTLM'
-verb:sync
-disableLink:AppPoolExtension
-disableLink:ContentExtension
-disableLink:CertificateExtension
-retryAttempts=2
Run Code Online (Sandbox Code Playgroud)
您可以看到正在设置UserName属性,该值是当前登录用户的用户名.如果我把它拿出并直接运行上面的命令,那么部署就可以了.
那么在此基础上,为什么原始MSBuild命令在调用MSDeploy时插入UserName属性?这似乎是现在唯一的障碍.
我在观看Scott Hanselman 关于网络部署的视频后,刚刚在VS2010 RC的.NET 3.5项目中启用了配置转换.不幸的是每次我发布我现在都会收到以下错误:
"TransformXml"任务意外失败.System.UriFormatException:无效的URI:URI为空.在System.Uri.CreateThis(String uri,Boolean dontEscape,UriKind uriKind)
,位于Microsoft.Build.BackEnd.TaskExecutionHost的Microsoft.Web.Publishing.Tasks.TransformXml.Execute()的System.Uri..ctor(String uriString).微软.Build.BackEnd.ITaskExecutionHost.Execute()在Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost,TaskLoggingContext taskLoggingContext,TaskHost taskHost,ItemBucket bucket,TaskExecutionMode howToExecuteTask,Boolean&taskResult)
如果我采用一个全新的VS2010 Web应用程序,默认情况下我已经有配置转换,我没有问题,所以我怀疑我的问题与项目有关.有没有人遇到过这个问题或对修复有任何想法?
asp.net configuration publishing visual-studio-2010 visual-studio
我最近在VS2010中一直使用配置转换,但是为什么有些转换直接应用于包中的Web.config,但是其他转换存储在SetParameters.xml中的令牌然后应用于发布时.
例如,使用以下连接字符串和应用程序设置获取Web.config:
<connectionStrings>
<add name="AutoDeployDb" connectionString="Data Source=(local);Initial Catalog=AutoDeploy;User ID=AutoDeployUser;Password=Passw0rd"/>
</connectionStrings>
<appSettings>
<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
那么这是当前构建配置的相应配置转换:
<connectionStrings>
<add xdt:Transform="Replace" xdt:Locator="Match(name)" name="AutoDeployDb" connectionString="Data Source=MyDevServer;Initial Catalog=AutoDeploy;User ID=AutoDeployUser;Password=s*#@Kdsl" />
</connectionStrings>
<appSettings>
<add xdt:Transform="Replace" xdt:Locator="Match(key)" key="ChartImageHandler" value="storage=file;timeout=20;dir=d:\inetpub\AutoDeploy\TempImageFiles\"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)
这些都是"替换"变换,而不是一个是在"名称"上匹配的连接字符串,另一个是与"密钥"匹配的应用程序设置,在我看来它们是相同的.
现在查看结果包中的SetParameters.xml文件,只有连接字符串具有setParameter节点.在PackagTmp文件夹的Web.config中,应用设置转换已应用,而连接字符串具有"$(ReplacableToken_AutoDeployDb-Web.config Connection String_0)"值,该值仅在部署包时应用.
为什么是这样?它是连接字符串特有的东西(或相反,应用程序设置)?我很欣赏这种方法的基本原理,我不清楚为什么它适用于某些设置而不适用于其他设置.
任何人都可以对此有所了解吗?
我在Windows 2003机器上遇到了一些挑战,我需要在不是80的端口上运行Web部署代理.默认情况下,MsDepSvc将在http:// [server]/MsDeployAgentService中公开端点这显然是隐含地侦听端口80.
我遇到的问题是该机器还在运行使用端口80的Visual SVN Server,因此Web部署代理服务拒绝启动.(至少这是我能得出的唯一合乎逻辑的结论.)我在同一台机器上有一个小型SVN管理应用程序,我想通过Web部署发布这个难题.
是否可以在另一个端口上运行代理?显然,如果这是IIS7,我们将在8172上,一切都会好的,但不幸的是,情况并非如此.有什么建议?
我有一个大型内部企业基于Web的应用程序在IIS6上运行ASP.NET 3.5的情况,生成401"未授权"响应,然后是200"Ok"响应(由Fiddler描述).我知道为什么会发生这种情况(集成auth强制浏览器重新发送凭据)但我正在寻找一些关于如何最小化或根除情况的想法.有问题的应用程序在WAN中运行,一些用户遇到的延迟时间高达250毫秒,因此强制后续请求会对页面加载时间产生明显影响,尤其是当页面上有许多级联下拉列表时.
应用程序的用户是托管桌面环境内部的,因此从部署的角度来看,可以强制浏览器在第一个请求上发送凭据(这是否可能?).这适用于需要用户身份但不需要身份验证的资源(WebResource.axd,ScriptResource.axd和一些自定义Web服务)的页面,允许匿名身份验证.我已经看过在web.config中基于每个位置定义这个,但是结果是混合的(仍然有许多401响应).
对于处理这种情况的"最佳实践",我很感激.有很多资源可以识别问题,但我找不到提供可行解决方案的资源.
谢谢!
编辑:可以通过向Web配置添加位置条目匿名请求不需要身份验证的资源(即用于级联下拉列表的Web服务),但我还没有找到经过身份验证的资源的答案.
我刚刚开始研究Win Phone 8.1,并在模拟器中通过Fiddler代理一些数据,但它似乎不想玩球.电话7和8(不是8.1)周围的所有指导似乎是模拟器将路由流量,因为您希望机器上的其他应用程序谈论HTTP,但我没有看到它发生.例如,Eric的帖子在这里:http://blogs.msdn.com/b/fiddler/archive/2010/10/15/fiddler-and-the-windows-phone-emulator.aspx
没有应用过滤器.
内容在模拟器上的IE中成功加载.
Fiddler成功捕获来自主机的所有流量.
模拟器可以成功浏览到主机以获取Fiddler根证书.
Fiddler正确设置了registrationhostname属性.
所以我几乎没有想法,我在多台机器上看到了相同的行为.我更倾向于认为我错过了一些明显的东西而不是我认为8.1中有什么变化,对下一步该尝试的任何想法?
有一两件事,我感到困惑的是,我看到(如Eric的)指导有关配置提琴手允许远程连接会谈,但再没有什么在为你通常用物理设备做仿真器设置的代理.我假设这是通过在Fiddler中配置主机名来解决的,然后由模拟器解析它以通过代理路由?
编辑:仅供参考,我需要模拟器,因为它将用于即将到来的Pluralsight课程,我想通过Fiddler显示手机行为和流量.我怀疑这个问题可能与它在主机上通过虚拟网卡进行通话的事实有关,听起来合理吗?
有没有人遇到一个工具来报告.NET应用程序中已注释掉的代码?我在说的模式如下:
//var foo = "This is dead";
Run Code Online (Sandbox Code Playgroud)
和
/*
var foo = "This is dead";
*/
Run Code Online (Sandbox Code Playgroud)
ReSharper或FxCop等工具无法找到未引用的代码.将注释代码与注释文本区分开来有明显的含义,但它看起来不是太大的任务.
有没有现成的工具可以选择这个?即使只是通过文件而不是完整的IDE集成报告事件.
编辑1:我还将其记录为StyleCop功能请求.似乎非常适合该工具.
编辑2:是的,有一个很好的理由我为什么要这样做,它与代码质量有关.请参阅下面的评论.