Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过命令提示符调用MSBuild?_C#_Visual Studio 2008_Msbuild_Web_Publish - Fatal编程技术网

C# 如何通过命令提示符调用MSBuild?

C# 如何通过命令提示符调用MSBuild?,c#,visual-studio-2008,msbuild,web,publish,C#,Visual Studio 2008,Msbuild,Web,Publish,我有一个网站(不是web应用程序),我想每晚从同一目录下的命令提示符发布它 我不想使用TeamCity、TFS之类的构建自动化工具,也不想使用Nant之类的第三方工具——应该使用MSBuild来完成。我该怎么做 更新:在发布窗口中,应选中的唯一选项是使用固定命名和单页程序集根据您的评论,您的web项目是网站项目,而不是web应用程序项目 在这种情况下,“发布”目标不能是选项,但“AspNetCompiler”是解决方案 创建一个包含以下内容的xml文件,并从MSBuild调用它 <Proj

我有一个网站(不是web应用程序),我想每晚从同一目录下的命令提示符发布它

我不想使用TeamCity、TFS之类的构建自动化工具,也不想使用Nant之类的第三方工具——应该使用
MSBuild
来完成。我该怎么做


更新:在发布窗口中,应选中的唯一选项是
使用固定命名和单页程序集

根据您的评论,您的web项目是网站项目,而不是web应用程序项目

在这种情况下,“发布”目标不能是选项,但“AspNetCompiler”是解决方案

创建一个包含以下内容的xml文件,并从MSBuild调用它

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="PrecompileWeb">
        <AspNetCompiler
            VirtualPath="/MyWebSite"
            PhysicalPath="c:\inetpub\wwwroot\MyWebSite\"
            TargetPath="c:\precompiledweb\MyWebSite\"
            Force="true"
            Debug="true"
            FixedNames="True"
        />
    </Target>
</Project>

您可以配置所有的取消/检查选项

FixedName=“True”等于选中“使用固定命名和单页…”选项

然后从MSBuild而不是解决方案文件调用此文件

MSBuild your.xml /p:Configuration=<Debug/Release>
MSBuild your.xml/p:配置=
只要网站项目引用了类库,它们就会一起构建

MSBuild.exe **MYPROJ**.sln 
/p:outdir="Z:\output\\",OutputPath="Z:\output\\",webprojectoutputdir="Z:\output\\",configuration=RELEASE 
/t:Clean;Build 

/flp1:logfile=Z:\output\\\Log_msbuild.log;verbosity=detailed 
/flp2:logfile=Z:\output\\\Log_warnings.log;warningsonly;verbosity=detailed 
/flp3:logfile=Z:\output\\\Log_errors.log;errorsonly;verbosity=detailed 

/nologo 
/noconlog

İt可以编译所有类型的项目(Web、Web服务、桌面等等),并可以创建日志文件(buildlog、error和warnings)。

很抱歉回复太晚,感谢您的输入。不幸的是,你的建议不起作用,因此我最终做了以下工作:

  • 选择“生成默认值”选项卡下的“此生成不将输出文件复制到放置文件夹”
  • 使用“流程”选项卡下的默认模板
  • 选择
    AsConfigured
    作为
    2下的
    输出位置的值。在流程选项卡下生成
  • 使用此MSBuild参数字符串:

    /p:DeployOnBuild=True;DeployTarget=PipelinePreDeployyCopyallFilesTooneFolder;PackageTempRootDir=“\\192.168.x.x\Nightly\MainBranch”;AutoParameterizationWebConfigConnectionStrings=false

  • 此结果是我用作测试站点webroot的以下文件夹:
    \\192.168.x.x\Nightly\MainBranch\PackageTmp
    。 这显然不是最优的,因为我不希望有
    PackageTmp
    文件夹,而且我也没有测试过在同一个解决方案中有多个web应用程序时会发生什么,但我不能在这个问题上花费更多的时间


    我真的不明白为什么微软把这么简单的任务弄得这么复杂。

    应该是这样的:msbuild Portal.sln或msbuild websiteMy解决方案包含4个
    类项目和一个网站,我想先构建项目,然后发布网站。你能为这个senario写一个psudo代码吗?发布的唯一设置是使用固定命名,不应选中单页程序集和其他复选框。提前感谢您您的回答正是我想要的,但不幸的是,当我运行您的命令(MSBuild命令)时,我遇到了一个错误,
    此应用程序已预编译
    。我的问题通过从路径中删除precompiledweb.Config解决了。