gpt4 book ai didi

具有密码保护的协同设计失败的Team Foundation服务器构建

转载 作者:IT老高 更新时间:2023-10-28 11:13:00 27 4
gpt4 key购买 nike

我正在尝试在tfs 2008上建立一个持续的集成构建。在我要构建的项目中,我使用密钥进行签名。此密钥使用密码。我无法让它生成,因为在生成期间,tfs希望显示一个无法显示的对话框。我认为我需要在服务器上手工构建项目,但是只有TFS资源管理器和构建部件安装在服务器上。关于如何使我的项目正确构建有什么建议吗?
这是tfs给出的错误:
C:\windows\microsoft.net\framework\v3.5\microsoft.common.targets(1805,7):
错误MSB4018:“ResolveKeySource”
任务意外失败。
System.InvalidOperationException:无效操作异常:
显示模式对话框或窗体
当应用程序未运行时
用户交互模式无效
操作。指定
服务通知或
默认仅显示桌面样式
来自服务的通知
应用程序。在
System.Windows.Forms.Form.ShowDialog(Iwin32窗口
所有者)
System.Windows.Forms.Form.ShowDialog()。

Microsoft.Build.Tasks.ResolveKeySource.Resolveassemblykey()。

Microsoft.Build.Tasks.ResolveKeySource.Execute()。

最佳答案

下面详细介绍了具体步骤。
安装程序密钥文件
使用项目属性中的Visual Studio“签名”选项卡创建受密码保护的私钥/公钥对(key pair.pfx)
从密钥对中提取公钥并将其复制到单独的文件(key.snk)
sn.exe-p密钥对.pfx key.snk
将keypair.pfx复制到构建服务器。我使用c:\program files\msbuild\keyfile.pfx,因为它随后可以由$(msbuildExtensionsPath)msbuild属性访问。
将keypair.pfx文件移动到安全的位置。密码也要保密。
将key.snk复制到开发人员可以访问的共享位置。
设置要签名的项目
对于要签名的每个程序集:
打开项目属性签名页
选中[X]对程序集签名复选框。
选中[X]Delay Sign Only复选框。
从“密钥文件”下拉列表中选择。
浏览到共享位置并选择key.snk文件
snk文件将被复制到分配给它的每个项目目录中。
将某个项目中的密钥文件复制到解决方案项中,以便将其用于测试运行配置。
设置重新签名的测试运行配置
如果要检测程序集并为单元测试启用代码覆盖率,则需要指定用于重新签名的密钥文件。
打开localtestrun.testrunconfig文件
在“代码覆盖率”选项卡上,选择密钥作为重新签名密钥文件。
在开发人员工作站上禁用强名称验证
由于只使用公钥延迟签名,.NET CLR程序集验证将在本地生成程序集时失败。当验证失败时,您将无法运行或调试程序集。
为了在开发中克服这一点,需要对本地生成的程序集禁用强名称验证,并使用公钥延迟签名。
打开Visual Studio命令提示
Type:
sn.exe -tp Key.snk
这将输出一些数据,包括令牌。
Type:
sn -Vr *,YOUR_KEY_TOKEN
示例:sn -Vr *,0123456789abcdef
这将禁用用公钥签名的所有程序集的强名称验证。
您可以列出强名称验证的当前设置:
SN—Vl
正在安装团队生成的私钥
由于私钥(key.pfx)受密码保护,因此团队构建无法访问它。多亏了blog post,我们有了一个解决方案。
作为生成服务帐户登录到Team Build Server
在Visual Studio中打开项目
在Visual Studio中生成项目
系统将提示您输入私钥文件的密码。
输入密码
关闭Visual Studio并注销
私钥文件现在安装在生成服务帐户的本地证书存储中,Team Build可以访问它,而无需再次提示输入密码。此证书存储与生成服务帐户的密码一样安全。(提示:使其与密钥文件的密码一样强)
正在更新tfsbuild.proj生成脚本
team build可以访问私有密钥文件和密码。这允许它对程序集进行完全签名。
要重写项目设置并指示team build使用私有密钥文件并禁用部分签名,我们需要在tfsbuild.proj中设置custompropertiesforbuild属性。
签出tfsbuild.proj生成脚本
搜索占位符属性(默认在第130行附近)
替换为以下内容:
signassembly=true;delaysign=false;assemblyoriginatorkeyfile=$(msbuildExtensionsPath)\key.pfx
签入您的更改
将生成排队
验证团队生成输出
要检查TeamBuild是否对程序集进行了正确的强名称命名,可以使用sn.exe实用工具验证强名称签名。
打开Visual Studio命令提示
Type:
sn.exe-vf assemblyname.dll文件
您还可以同时验证所有程序集:
打开Visual Studio命令提示
Type:
对于在(*.dll)中的%a,执行sn.exe-vf%a

关于具有密码保护的协同设计失败的Team Foundation服务器构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1056997/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com