5

我有一个解决方案,其中包含许多类库和一个引用这些程序集的 ASP .NET 网站。

当我从 IDE 中构建解决方案时,网站引用的所有程序集最终都在 bin 目录中。伟大的!

当我从命令行使用 MsBuild 时,所有引用的程序集都不会复制到 bin 目录中。为什么?

我的命令行很简单:

msbuild.exe d:\myproject\mysolution.sln
4

9 回答 9

1

我面临的问题是我有一个依赖于库项目的项目。为了构建,我遵循以下步骤:

msbuild.exe myproject.vbproj /T:Rebuild
msbuild.exe myproject.vbproj /T:Package

这当然意味着我在 bin 中丢失了我的库的 dll 文件,最重要的是在包 zip 文件中。我发现这非常有效:

msbuild.exe myproject.vbproj /T:Rebuild;Package

我不知道为什么这个工作或为什么它没有放在首位。但希望这会有所帮助。

于 2012-07-18T22:46:49.490 回答
1

我在网上发现了各种关于这个问题的参考资料——我自己也遇到过。显然,命令行上的 MSBuild 在跟踪依赖链方面不如 IDE 好。

据我了解,如果 A 依赖于 B 而 B 又依赖于 C,那么命令行可能不会意识到 A 依赖于 C。

我发现的唯一解决方案是确保您手动设置项目依赖项,以便 ASP 项目引用它所依赖的所有内容 - 不要指望它能够在命令行上将它们全部弄清楚。这对我很有用,虽然我只有 5 个项目,所以这不是一个约束。

我希望这有帮助。

于 2008-11-19T21:22:43.850 回答
0

You could always use a copy task in MSBuild to pull your assemblies into the proper directory. I asked a question not to long ago and ended up answering it myself. It shows how you can setup your Copy task to grab output from another project and pull it into your target project:

MSBuild copy output from another project into the output of the current project

于 2008-11-13T17:45:48.957 回答
0

我没有为 ASP.NET 使用 msbuild,而是使用 aspnet_compiler。虽然......我不记得为什么。对不起。

%windir%\Microsoft.Net\framework\v2.0.50727\aspnet_compiler -v \%~n1  -f -p .\%1 .\Website
于 2008-11-13T19:07:48.010 回答
0

您引用的是哪个 msbuild?是正确的吗?

我通常这样调用(来自批处理文件):

%WINDIR%\Microsoft.NET\Framework\v3.5\msbuild.exe deploy.proj /v:n

在此示例中,deploy.proj 只是一个常规的 msbuild 文件,它在对 .sln 文件调用 msbuild 之前和之后执行一些其他操作。

于 2008-11-07T14:49:07.293 回答
0

我认为只有当您的 bin 目录不是框架的默认解决方案时,才会出现此问题。

我了解 msbuild 使用每个项目设置来构建它。如果是这样,请转到每个项目属性页面并检查构建后事件命令行参数。

于 2008-11-07T14:54:20.840 回答
0

您可以利用项目属性中的 Post-Build 步骤将项目的输出复制到特定位置。

这将复制到与 Sln 文件位于同一目录中的 Assemblies 目录。我在所有项目的后期构建步骤中都有这个。

md "$(SolutionDir)Assemblies"
del "$(SolutionDir)Assemblies\$(TargetFileName)"
copy "$(TargetPath)" "$(SolutionDir)Assemblies" /y
于 2010-02-23T01:48:01.183 回答
0

MSBuild 3.5 和 msbuild 4.5 的已知问题。我正在使用在以下位置找到的 Msbuild 4

 c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe <yourSolutionFile>.sln

它似乎解决了这个问题。

于 2014-02-12T13:56:22.250 回答
-3

如果我记得,MSBuild 不会复制引用的程序集。我刚刚发布了一个“解决方案”: http ://www.brunofigueiredo.com/post/Issue-Tracker-part-IV-The-Build-Enviroment-using-MSBuild-(or-NAnt).aspx

希望能帮助到你。

于 2008-11-07T14:59:19.223 回答