为什么我的buildserver中的部署包有其他程序集?

时间:2011-04-09 09:43:16

标签: .net visual-studio-2010 teamcity

我有一个asp.net mvc部署包,我正在尝试使用团队城市构建。包构建没有任何问题,但bin文件夹包含不需要的文件(并导致站点在存在时失败)。

如果我从visual studio构建相同的包,则不存在其他文件。

其他文件是:

Microsoft.VisualBasic.Activities.Compiler.dll
mscorlib.dll
normidna.nlp
normnfc.nlp
normnfd.nlp
normnfkc.nlp
normnfkd.nlp
System.Data.dll
System.Data.OracleClient.dll
System.EnterpriseServices.dll
System.EnterpriseServices.Wrapper.dll
System.Transactions.dll

如何防止这些额外的程序集和.nlp文件包含在程序包中?

更新

经过一些日志文件挖掘后,我发现_CopyFilesMarkedCopyLocal构建任务正在将文件复制到bin目录中。奇怪的是,程序集未标记为本地副本。

4 个答案:

答案 0 :(得分:62)

经过多次挖掘后,我注意到构建服务器上有.Net框架,但没有框架SDK。在构建服务器上安装SDK后,不再添加其他程序集。

答案 1 :(得分:28)

我在only had 4.5.1 sdk安装的构建服务器上遇到了同样的问题。

修复

p:FrameworkPathOverride参数添加到msbuild。例如:

msbuild /p:FrameworkPathOverride="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1"

答案 2 :(得分:3)

最简单的解决方案是将我的本地C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework复制到构建服务器

答案 3 :(得分:2)

在运行 Windows Server 2012 R2 的构建服务器上,我遇到了类似的问题 - 以下任务是将不需要的文件复制到输出目录:

[06:47:07]_CopyFilesMarkedCopyLocal
[06:47:07]Copy
[...]
[06:47:07]Copying file from "C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll" to "bin\Release\mscorlib.dll".
[06:47:07]Copying file from "C:\Windows\Microsoft.NET\Framework\v4.0.30319\normidna.nlp" to "bin\Release\normidna.nlp".
[06:47:07]Copying file from "C:\Windows\Microsoft.NET\Framework\v4.0.30319\normnfc.nlp" to "bin\Release\normnfc.nlp".
[06:47:07]Copying file from "C:\Windows\Microsoft.NET\Framework\v4.0.30319\normnfd.nlp" to "bin\Release\normnfd.nlp".
[06:47:07]Copying file from "C:\Windows\Microsoft.NET\Framework\v4.0.30319\normnfkc.nlp" to "bin\Release\normnfkc.nlp".
[06:47:07]Copying file from "C:\Windows\Microsoft.NET\Framework\v4.0.30319\normnfkd.nlp" to "bin\Release\normnfkd.nlp".

与@ilivewithian的答案类似,缺少一个包:Microsoft .NET Framework 4.5.2 Developer Pack for Windows Vista SP2, Windows 7 SP1, Windows 8, Windows 8.1, Windows Server 2008 SP2 Windows Server 2008 R2 SP1, Windows Server 2012 and Windows Server 2012 R2