VS2012 发布配置文件 - 加密密码

9

我喜欢使用新的VS 2012发布配置文件,但当我在构建服务器上使用它们时,我不确定如何存储密码。

当我勾选“保存密码”复选框时,它会创建一个.pubxml.user文件,并将密码加密在XML节点中。

当我在构建服务器上运行部署时,密码文件似乎总是被忽略。

我可以通过将密码存储在

<PropertyGroup>
    <Password>NotMyRealPassword>
</PropertyGroup

但是既然它们已经对其进行了加密,如果可以的话,我很愿意使用VS加密。

我如何解密并填充<Password>属性,而无需构建自定义任务来完成此操作?

另外 - 如果我确实需要构建自定义MSBUILD任务,那么在这个SUO文件中使用了什么类型的加密?

1个回答

12

当我试图回答你的问题时,我意识到我不太适合回答这个问题,但我想对.pubxml.user文件发表一些评论。

在Visual Studio中保存Web发布配置文件时,我们会加密密码并将加密后的值存储在给定发布配置文件的.pubxml.user文件中。我们按每个用户/每台机器的基础进行加密。因此,如果您将同一文件带到另一台计算机上(或者不同的用户登录到同一台计算机上),它将无法解密为正确的值。因此,没有必要调查能否在构建服务器上解密由VS存储的值。


1
啊,真遗憾...我认为在这种情况下,将此信息放在CI中是最好的选择,因为能够测试您的CI服务器正在执行的操作非常关键,以避免任何CI/CD摩擦。http://www.diaryofaninja.com/blog/2011/03/27/continuous-integration-ndash-itrsquos-all-about-your-build-projects-ecosystem附言:感谢您的精彩回答! - Doug
1
所以,阅读了你的另一篇文章之后,赛义德,我应该将其作为命令行参数传递吗?对我来说,这感觉有点“代码臭味”。 - Fetchez la vache
4
虽然我来晚了,@Doug,但是你可以将msdeploy密码存储在 Windows 凭据管理器中,并使用 msdeploy 的 getCredential 参数(尽管 msbuild 任务不支持此参数)。 - Richard Szalay
有趣。如果你正在遵循“构建服务器持有密钥”模型,那确实是一个非常好的技巧 - 尽管发布配置文件没有包含它的方法。 - Doug
1
尝试使用msbuild自动发布,希望使用Visual Studio保存的凭据(在同一台机器和用户上),但目前似乎不可能?@Sayed我是否正确认为这不受支持,如果是这样,我应该在哪里提交错误报告(或者微软实际上推荐在命令行中使用明文密码)? - NiKiZe
@nikize,您可以使用“报告问题”功能进行报告。https://learn.microsoft.com/zh-cn/visualstudio/ide/how-to-report-a-problem-with-visual-studio-2017?view=vs-2017 - Sayed Ibrahim Hashimi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接