2013-08-01 38 views
0

从Web应用程序项目构建Web部署包时存在问题(在包含多个项目的解决方案中作为多个Web应用程序)。MsBuild无法构建包,但可以在“正常”构建后“构建”或构建包

这实际工作

我可以建立项目的命令行就好了,如果我用这个命令,例如:

msbuild D:\PathTo\Solution\Project\Project.csproj 
    /fl /flp:logfile="D:\buildadventures\Build.log";errorsonly;verbosity=diagnostic 
    /p:SolutionDir="D:\PathTo\Project\\";Configuration=Release;Platform=AnyCpu 

但这不起作用

但是当我尝试使用相同的命令时,有点不同,以便为我构建部署包:

msbuild D:\PathTo\Solution\Project\Project.csproj 
    /fl /flp:logfile="D:\buildadventures\Build.log";errorsonly;verbosity=diagnostic 
    /T:Package 
    /p:SolutionDir="D:\PathTo\Solution\\";Configuration=Release;Platform=AnyCpu; 
    PackageLocation="D:\buildadventures\Project.zip"; 
    AutoParameterizationWebConfigConnectionStrings=false 

...这悲惨的失败了,吐出上百的错误“的类型或命名空间名称‘’不存在” -kind

为什么它会以这种方式工作?

然而,奇怪的是,我发布的第二个命令工作正常,如果第一个命令在此之前执行。

我认为执行“正常”构建时执行的任务与构建包时执行的任务不同,现在我想知道它们以何种方式不同。

对症似乎什么导致它

我注意到,在该项目的项目文件,我想包含接近尾声自定义栏目构建一个软件包:

<PropertyGroup> 
    <PreBuildEvent> 
     cscript $(ProjectDir)SvnRevision\svnrevision.vbs $(ProjectDir) $(ProjectDir)Version.cs 
     nuget install "$(ProjectDir)packages.config" -o "$(SolutionDir)Packages" 
    </PreBuildEvent> 
</PropertyGroup> 

这似乎对这种差异负责;如果我做了一个“正常”的构建,我可以看到之后,在我的解决方案文件夹中创建了一个新的“Packages”目录。 但是,正如您可能已经猜到的那样,当我尝试执行程序包创建命令时,该目录缺失。如果我让Visual Studio为我创建软件包,我也不会遇到这个问题。

也许我不得不改变项目文件或传递属性来为我的包创建带来这种行为吗?

或者有没有办法强制一个“正常”的构建,然后只是追加包的创建?

回答

0

傻了。 我能够通过在我的msbuild命令中调用多个目标来解决此问题,例如:

msbuild D:\PathTo\Solution\Project\Project.csproj 
    /fl /flp:logfile="D:\buildadventures\Build.log";errorsonly;verbosity=diagnostic 
    /t:Build;Package 
    /p:SolutionDir="D:\PathTo\Solution\\";Configuration=Release;Platform=AnyCpu; 
    PackageLocation="D:\buildadventures\Project.zip"; 
    AutoParameterizationWebConfigConnectionStrings=false