首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >已部署的dll文件不是由TFS构建的。

已部署的dll文件不是由TFS构建的。
EN

Stack Overflow用户
提问于 2016-01-20 16:00:02
回答 2查看 635关注 0票数 0

我有一个TFS 2013构建定义,最近开始表现得很奇怪。一年多来,它一直在做自己的工作,没有任何问题。

它构建了4个不同的项目。其中两个是asp.net mvc/webapi项目,它们也通过msdeploy部署部署到同一个QA临时web服务器上的两个单独的网站上。构建被配置为使用Release

当构建运行时,dll版本将使用ApplyVersionToAssemblys powershell脚本设置。

在“生成”文件夹中,所有程序集都具有正确的版本。但在其中一个已部署的网站中,"WebUI.dll“中的一个dll文件的版本号为1.0.0.0,与构建目录中的dll相同,即4.0.buildnumber。

部署的"WebUI.dll“似乎也是在调试模式下构建的,因为只有在定义调试时才会显示一些按钮和操作。

如果我从build目录或甚至PublishedWebsites目录复制构建的PublishedWebsites,一切都按预期工作。

因此,我的问题是,MSDeploy如何通过MSBuild创建它自己的WebUI.dll版本?(没有-“定义调试常量”复选框没有在发布模式下签入)。在服务器上的任何地方都找不到1.0.0版本的WebUI.dll,所以我猜当msdeploy运行时必须“创建”它?

(我最近所做的唯一改变就是添加了一个新的构建定义,它构建相同的解决方案,运行所有测试,但不部署任何东西。)

更新:我尝试使用与构建过程使用的相同的发布配置文件从VS发布,并且按预期工作。部署的WebUI.dll是在发布模式下构建的。版本没有被应用,因为它是构建过程的一部分,但重要的是它的发布模式dll已经部署,而不是Debug,这是当构建过程执行部署时的情况。我还尝试创建一个,并将其安装在本地服务器上,结果是相同的。

因此,问题仍然是构建过程中内置的WebUI.dll是正确的(发布模式和正确的版本控制),但是在构建服务器的部署过程中会被调试模式“替换”,而不需要分文。

更新2;Msbuild

代码语言:javascript
复制
C:\Program Files (x86)\MSBuild\12.0\bin\amd64\MSBuild.exe /nologo /noconsolelogger "C:\Builds\2\Products\SomeApp4.Main\src\SomeApp4\Main\Source\SomeApp4.Web.sln" /nr:False /fl /flp:"logfile=C:\Builds\2\Products\SomeApp4.Main\src\SomeApp4\Main\Source\SomeApp4.Web.log;encoding=Unicode;verbosity=normal" /p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:PublishProfile=Chicago /p:AllowUntrustedCertificate=true /p:Password=bw /m /p:OutDir="C:\Builds\2\Products\SomeApp4.Main\bin\SomeApp4.Web\\" /p:Configuration="Release" /p:Platform="Any CPU" /p:VCBuildOverride="C:\Builds\2\Products\SomeApp4.Main\src\SomeApp4\Main\Source\SomeApp4.Web.sln.Any CPU.Release.vsprops" /dl:WorkflowCentralLogger,"C:\Program Files\Microsoft Team Foundation Server 12.0\Tools\Microsoft.TeamFoundation.Build.Server.Logger.dll";"Verbosity=Normal;BuildUri=vstfs:///Build/Build/740;IgnoreDuplicateProjects=False;InformationNodeId=14;TargetsNotLogged=GetNativeManifest,GetCopyToOutputDirectoryItems,GetTargetPath;LogProjectNodes=True;LogWarnings=True;TFSUrl=http://boston.SomeCompany.local:8080/tfs/SomeCompany;"*WorkflowForwardingLogger,"C:\Program Files\Microsoft Team Foundation Server 12.0\Tools\Microsoft.TeamFoundation.Build.Server.Logger.dll";"Verbosity=Normal;" /p:BuildId="abd7db3d-4ff8-43b4-ab36-f35c6f6e5697,vstfs:///Build/Build/740" /p:BuildLabel="SomeApp4.Main_4.0.6.740_20160121_103558" /p:BuildTimestamp="Thu, 21 Jan 2016 09:35:59 GMT" /p:BuildSourceVersion="LSomeApp4.Main_4.0.6.740_20160121_103558@$/Products" /p:BuildDefinition="SomeApp4.Main"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-21 12:22:57

我发现了问题。

构建定义构建了4个解决方案,其中一个是WebUI(aspnet )解决方案,一个是Api解决方案(asp.net WebApi)。

在Api解决方案中,项目引用WebUI项目,但WebUI项目不在Api解决方案中。

MSbuild以任何方式解决了WebUI项目,因此没有错误,而且构建+部署的api解决方案也是有效的。但是WebUI项目是在调试模式下构建的,因为它在Api解决方案中没有解决方案配置。

当msbuild使用deploy标志运行api解决方案时,它还设法部署了内置于调试中的WebUI项目。

因此,WebUI项目被部署了两次。首先是正确的WebUI解决方案,然后是用Api解决方案编译的错误的调试WebUI。

哈!这是我要说的全部。

谢谢你们的帮助。

票数 0
EN

Stack Overflow用户

发布于 2016-01-21 09:32:11

更改程序集版本时,源代码管理下的版本不会更改。您只能更改已复制到生成代理计算机上的版本。如果msdeploy命令的源指向TFS中的项目,则不会得到版本化的程序集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34904729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档