我在从Web应用程序项目构建Web部署包时遇到问题(在包含多个项目的解决方案中,以及多个Web应用程序中)。
这实际上有效
如果我使用此命令,我可以从命令行构建项目:
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 :(得分:0)
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