小编Say*_*imi的帖子

如何使用msbuild发布Web?

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="&quot;$(ProjectPath)\obj\$(Configuration)\Package\$(ProjectName).deploy.cmd&quot; /y /m:$(DeployServer) -enableRule:DoNotDeleteRule" 
          ContinueOnError="false" />
</Target>
Run Code Online (Sandbox Code Playgroud)

asp.net msbuild teamcity visual-studio-2010 msdeploy

208
推荐指数
7
解决办法
20万
查看次数

_CopyWebApplication与web.config转换

我正在尝试在执行发布版本时自动发布我的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.

任何想法都表示赞赏.

msbuild msdeploy

43
推荐指数
1
解决办法
2万
查看次数

在64位计算机上使用Visual Studio 2010时,无法编辑和继续,应用程序的目标是x86

在Windows 7 64位计算机上使用Visual Studio 2010时,我遇到了编辑和继续的问题.我确保了以下几点

  1. 在工具>选项>调试>编辑并继续下启用编辑并继续
  2. 我的解决方案平台设置为x86
  3. 我的解决方案配置设置为Debug
  4. 我的所有项目都是为Debug和x86构建的
  5. 对于项目下的所有项目>属性>生成的优化代码选中

当我遇到一个断点并尝试编辑我并面对以下消息时.

在以下情况下,不允许进行更改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

43
推荐指数
3
解决办法
4万
查看次数

最好的XPath工具

你们为XPath使用了什么工具?为什么?现在我正在使用

SketchPath似乎对我来说最为突出,因为它实际上可以帮助您创建xpath并且它非常先进.如果你还没有尝试过,你应该这样做.

缺点是SketchPath:你必须在机器上安装它,否则它太棒了.

对WhiteBeam的缺点:你必须上传你出于安全原因我并不总是想做的文件,你可以上传的文件大小有一些限制,上传文件很烦人.另外我认为用于该工具的xpath与运行.NET应用程序之间可能存在一些细微差别.但是现在不记得了.请记住它.

xpath devtools

37
推荐指数
3
解决办法
8万
查看次数

为什么有些Web.config将tokenized转换为SetParameters.xml而其他的不是?

我最近在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)"值,该值仅在部署包时应用.

为什么是这样?它是连接字符串特有的东西(或相反,应用程序设置)?我很欣赏这种方法基本原理,我不清楚为什么它适用于某些设置而不适用于其他设置.

任何人都可以对此有所了解吗?

msbuild web-config visual-studio-2010 msdeploy

33
推荐指数
1
解决办法
4794
查看次数

Web部署 - 使用相对路径进行本地文件系统部署

我想使用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: 上述工作,但只有在针对解决方案文件而不是项目文件运行命令行构建时

msbuild msdeploy webdeploy

25
推荐指数
1
解决办法
1万
查看次数

app.config转换

我非常喜欢在Visual Studio 2010中添加web.config转换.另请参阅Scott Hanselman最近在MIX2011上的演讲.

糟糕的是,这个功能(至少看起来)只能用于Web项目.

在我们的解决方案中,我们有几个Windows服务,它们根据部署的环境连接到不同的数据库.

有没有人想出一个实现类似'app.config转换'功能的漂亮,整洁的方法?

注意:我们正在使用TFS 2010以持续集成的方式构建我们的解决方案.

deployment visual-studio slowcheetah

24
推荐指数
3
解决办法
2万
查看次数

Powershell脚本支持-verbose

我正在创建一个调用的.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行.

Powershell示例结果

powershell

21
推荐指数
3
解决办法
2万
查看次数

VS 2010 Web.config转换用于调试

我是新的VS 2010 Web.config转换的粉丝.我将此功能用于部署目的,并想知道是否可以将它们用于调试.

我想在IDE中使用它们:我想创建不同的构建配置(使用链接的转换配置); 选择其中之一; 在IDE中启动Web站点并以这种方式调试不同的配置.

asp.net configuration web-config visual-studio-2010 slowcheetah

20
推荐指数
3
解决办法
7011
查看次数

使用MsBuild生成自定义的MsDeploy清单(包目标)

我正在使用Web Deploy打包和部署我的产品的网站.特别是,我在我的解决方案中有两个不同的项目,我使用此方法进行部署.

我在解决方案(Windows服务)中有第三个项目,也需要在Web服务器上安装.

我知道我可以编写自定义清单(对dirPath,filePathrunCommand供应商),并直接调用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 manifest msdeploy slowcheetah

18
推荐指数
1
解决办法
7742
查看次数