Visual Studio 2010具有"发布"命令,允许您将Web应用程序项目发布到文件系统位置.我想在我的TeamCity构建服务器上执行此操作,因此我需要使用解决方案运行程序或msbuild.我尝试使用Publish目标,但我认为这可能适用于ClickOnce:
msbuild Project.csproj /t:Publish /p:Configuration=Deploy
Run Code Online (Sandbox Code Playgroud)
我基本上想要完成Web部署项目的功能,但没有加载项.我需要它来编译WAP,删除执行不必要的任何文件,执行任何web.config转换,并将输出复制到指定的位置.
我的解决方案基于Jeff Siver的回答
<Target Name="Deploy">
<MSBuild Projects="$(SolutionFile)"
Properties="Configuration=$(Configuration);DeployOnBuild=true;DeployTarget=Package"
ContinueOnError="false" />
<Exec Command=""$(ProjectPath)\obj\$(Configuration)\Package\$(ProjectName).deploy.cmd" /y /m:$(DeployServer) -enableRule:DoNotDeleteRule"
ContinueOnError="false" />
</Target>
Run Code Online (Sandbox Code Playgroud) 我正在尝试在执行发布版本时自动发布我的Web应用程序.我正在使用_CopyWebApplication目标执行此操作.我将以下内容添加到我的.csproj文件中:
<!-- Automatically Publish in Release build. -->
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
<Target Name="AfterBuild">
<RemoveDir Directories="$(ProjectDir)..\Output\MyWeb" ContinueOnError="true" />
<MSBuild Projects="MyWeb.csproj" Properties="Configuration=Release;WebProjectOutputDir=$(ProjectDir)..\Output\MyWeb;OutDir=$(ProjectDir)bin\" Targets="ResolveReferences;_CopyWebApplication" />
</Target>
Run Code Online (Sandbox Code Playgroud)
这有效,但有一个问题.此输出与在Visual Studio中使用"发布"菜单项时生成的输出之间的差异在于,在使用MSBuild方法时,Web.Release.config转换不会应用于Web.config文件.而是复制了Web.config,Web.Release.config和Web.Debug.config.
任何想法都表示赞赏.
在Windows 7 64位计算机上使用Visual Studio 2010时,我遇到了编辑和继续的问题.我确保了以下几点
当我遇到一个断点并尝试编辑我并面对以下消息时.
在以下情况下,不允许进行更改http://sedotech.com/Content/images/edit-and-continue.png
对于我创建的所有项目,无论它们是WPF/Win Forms/VB.NET/C#/ .NET 4/.NET 3,都会发生这种情况.
有任何想法吗?
64-bit x86 visual-studio-2010 edit-and-continue visual-studio
你们为XPath使用了什么工具?为什么?现在我正在使用
SketchPath似乎对我来说最为突出,因为它实际上可以帮助您创建xpath并且它非常先进.如果你还没有尝试过,你应该这样做.
缺点是SketchPath:你必须在机器上安装它,否则它太棒了.
对WhiteBeam的缺点:你必须上传你出于安全原因我并不总是想做的文件,你可以上传的文件大小有一些限制,上传文件很烦人.另外我认为用于该工具的xpath与运行.NET应用程序之间可能存在一些细微差别.但是现在不记得了.请记住它.
我最近在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)"值,该值仅在部署包时应用.
为什么是这样?它是连接字符串特有的东西(或相反,应用程序设置)?我很欣赏这种方法的基本原理,我不清楚为什么它适用于某些设置而不适用于其他设置.
任何人都可以对此有所了解吗?
我想使用Web Deploy来运行自定义部署设置.
因为我想在许多不同的环境(团队成员本地机器,4个不同的构建服务器)上运行时能够正常工作,我想部署到相对的本地路径.
我想要做的是:
但是当我输入本地文件路径以部署为:"..\Deploy_Production"
Web部署抱怨:
2>Connecting to ..\Deploy_Live...
2>Unable to create the Web site '../Deploy_Live'. The URL http://:0 is invalid.
Run Code Online (Sandbox Code Playgroud)
它就好像Web部署认为相对文件路径是网站URL.使用".. \"代替我的原因.
如何将WebDeploy部署到本地相对路径?
编辑1:
我试图在构建之前使用ConvertToAbsolutePath任务,但无济于事:
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<SiteUrlToLaunchAfterPublish>http://mywebsite.com</SiteUrlToLaunchAfterPublish>
<publishUrl>..\Deploy_Production</publishUrl>
<DeleteExistingFiles>False</DeleteExistingFiles>
</PropertyGroup>
<Target Name="BeforeBuild">
<ConvertToAbsolutePath Paths="$(publishUrl)">
<Output TaskParameter="AbsolutePaths" PropertyName="publishUrl" />
</ConvertToAbsolutePath>
</Target>
Run Code Online (Sandbox Code Playgroud)
编辑2: 上述工作,但只有在针对解决方案文件而不是项目文件运行命令行构建时
我非常喜欢在Visual Studio 2010中添加web.config转换.另请参阅Scott Hanselman最近在MIX2011上的演讲.
糟糕的是,这个功能(至少看起来)只能用于Web项目.
在我们的解决方案中,我们有几个Windows服务,它们根据部署的环境连接到不同的数据库.
有没有人想出一个实现类似'app.config转换'功能的漂亮,整洁的方法?
注意:我们正在使用TFS 2010以持续集成的方式构建我们的解决方案.
我正在创建一个调用的.ps1脚本Write-Verbose.我希望能够启用/禁用这些.
我希望我可以-Verbose在调用脚本时传递标志,一切都会正常工作.不幸的是,情况似乎并非如此.
详细消息不会写入主机.我环顾四周,发现支持-Whatif,-Confirm,-Verbose-在脚本中!
但这是从2007年开始,PS团队成员表示他们正在寻找PS v2的内置支持.
有人对此有任何更新,还是我们必须使用该博客文章中描述的相同技术?
以下是当前行为的示例.
我用以下内容创建了一个简单的脚本ex01.ps1.
Write-Host "line 1"
Write-Verbose "line 2"
Write-Host "line 3"
Run Code Online (Sandbox Code Playgroud)
我首先用脚本执行了脚本.\ex01.ps1,只按预期打印了1和2.然后我用它执行它.\ex01.ps1 -verbose,得到了相同的结果.我期待第二次打印所有3行.

我是新的VS 2010 Web.config转换的粉丝.我将此功能用于部署目的,并想知道是否可以将它们用于调试.
我想在IDE中使用它们:我想创建不同的构建配置(使用链接的转换配置); 选择其中之一; 在IDE中启动Web站点并以这种方式调试不同的配置.
asp.net configuration web-config visual-studio-2010 slowcheetah
我正在使用Web Deploy打包和部署我的产品的网站.特别是,我在我的解决方案中有两个不同的项目,我使用此方法进行部署.
我在解决方案(Windows服务)中有第三个项目,也需要在Web服务器上安装.
我知道我可以编写自定义清单(对dirPath,filePath和runCommand供应商),并直接调用MsDeploy部署它.但是,如果可能的话,我想利用现有的MsBuild任务打包我的服务.
我看到可以通过msbuild目标对清单文件进行一些自定义:
http://social.msdn.microsoft.com/Forums/en/msbuild/thread/1044058c-f762-456b-8a68-b0863027ce47
特别是通过使用该MsDeploySourceManifest项目.
通过适当的.targets文件戳后,它看起来像要么contentPath或者iisApp如果我使用将得到追加到我的清单Package的目标.理想情况下,我只想复制程序集(或目录),可能设置ACL,并在服务上执行installutil.exe.
是否可以Package通过编辑我的csproj文件来完全自定义目标生成的清单?
如果没有,是否有一种简单的方法可以构建一个新的目标来实现相同的目标Package,但是允许我吐出一个完全自定义的清单?
msbuild ×5
msdeploy ×5
slowcheetah ×3
asp.net ×2
web-config ×2
64-bit ×1
deployment ×1
devtools ×1
manifest ×1
powershell ×1
teamcity ×1
webdeploy ×1
x86 ×1
xpath ×1