我有一个解决方案,其中包含许多类库和一个引用这些程序集的ASP .NET网站。
当我从IDE内部构建解决方案时,网站引用的所有程序集最终都会放到bin目录中。太好了!
但是当我从命令行使用MsBuild时,所有引用的程序集都没有复制到bin目录中。为什么呢?
我的命令行只是:
msbuild.exe d:\myproject\mysolution.sln
我在网络上找到了许多关于这个问题的参考资料,而且我自己也遇到了这个问题。显然,命令行上的MSBuild在跟踪依赖链方面不如IDE好。
所以我理解的是,如果A依赖于B,B又依赖于C,那么命令行可能无法意识到A依赖于C。
我找到的唯一解决方案是确保您手动设置项目依赖项,以便ASP项目引用其所依赖的所有内容-不要指望它能够在命令行上找出所有内容。这对我有用,尽管我只有5个项目,所以启动起来并不困难。
希望这可以帮到你。
msbuild.exe myproject.vbproj /T:Rebuild
msbuild.exe myproject.vbproj /T:Package
这当然意味着我在 bin 中和最重要的包 zip 文件中缺少我的库的 dll 文件。我发现以下方法可以完美解决:
msbuild.exe myproject.vbproj /T:Rebuild;Package
我不知道为什么这个工作或者一开始为什么它没有工作。但是希望这可以帮到你。
md "$(SolutionDir)Assemblies"
del "$(SolutionDir)Assemblies\$(TargetFileName)"
copy "$(TargetPath)" "$(SolutionDir)Assemblies" /y
已知问题对于MSBuild 3.5和msbuild 4.5。我正在使用找到的Msbuild 4
c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe <yourSolutionFile>.sln
看起来解决了这个问题。
我认为此问题仅在 bin 目录不是框架默认目录时才会出现。
我理解 msbuild 使用每个项目进行设置来构建它。如果是这样,请转到每个项目的属性页面并检查后生成事件命令行参数。
%windir%\Microsoft.Net\framework\v2.0.50727\aspnet_compiler -v \%~n1 -f -p .\%1 .\Website
如果我没记错的话,MSBuild不会复制引用的程序集。 我之前发布了一个“解决方案”: http://www.brunofigueiredo.com/post/Issue-Tracker-part-IV-The-Build-Enviroment-using-MSBuild-(or-NAnt).aspx 希望对您有所帮助。