我有一个ASP.Net项目正在使用ClearScript.V8库,它依赖于Visual Studio 2012 C ++ Redistributable来工作。我面临着必须在50多台机器上安装它的前景,我很好奇我是否可以让TFS为我做这件事。
我意识到这跨越Stack Overflow和Server Fault之间的某个地方,所以我在这两个网站都要求。
答案 0 :(得分:1)
假设ClearScript.V8的二进制文件包含在您的项目中(无论是复制到bin文件夹还是作为NuGet包的文件),您都应该能够在项目中包含必要的Visual C ++可再发行组件文件作为二进制文件。然后它们将存储在TFS中。
如果您更喜欢NuGet包,您可以在组织内设置一个本地NuGet存储库,并创建一个包含必要DLL的NuGet包,然后您可以从项目中引用它们。如果为您的解决方案配置了NuGet包还原,则将在构建解决方案之前下载该包。在VS2012中,您必须在Team Foundation Build服务器上进行一些自定义。
如果您不确定需要包含哪些DLL,可以使用Dependency Walker之类的工具来发现需要哪些DLL,或者您可以调试应用程序并查看模块中加载了哪些DLL窗口。 Microsoft提供了一些信息which DLLs to redistribute。
如果您在加载可再发行DLL的冲突版本时遇到问题,可以创建并行清单以确保将正确的DLL版本加载到您的应用程序中。但是,由于您的应用程序托管在ASP.NET中,这有点棘手,因为w3wp.exe
由您在直接控制之外的IIS执行。您必须创建activation context来配置应用程序使用的清单。
答案 1 :(得分:1)
如果您需要在服务器上安装内容以进行构建,我建议您使用Chocolatey。
这是PowerShell中NuGet的一个实现,可以明确解决您所面临的问题。您可以创建一个powershell文件,安装所需的所有位,并将其轻松包含在TFS 2013中作为预构建步骤。您可以使用TFS社区构建工具中的PowerShell活动在TFS 2010或2012中调用PowerShell。