2011-09-20 169 views
4

所以我试图让一个VS2010 C#项目去跨平台。首先的目标是将其构建在Windows的Mono 2.10.5中。我还没有触及任何代码 - 我从xbuild最近构建sln文件的能力开始。 (顺便说一下,我使用Jenkins触发构建,并不重要,因为我在命令行得到相同的结果。)单声道xbuild错误CS1548 - 密钥文件格式不正确

我得到“错误CS1548:程序集签名时出错。指定的密钥文件`AlphaBeta.pfx '格式不正确“。这个错误没有太多的谷歌果汁。有谁知道这会导致什么?提前致谢!

完整以下输出:

C:\Program Files\Jenkins\jobs\AlphaBeta\...\AlphaSolution>"C:\Program Files\Mono-2.10.5\bin\xbuild" AlphaSolution.sln 
XBuild Engine Version 2.10.5.0 
Mono, Version 2.10.5.0 
Copyright (C) Marek Sieradzki 2005-2008, Novell 2008-2011. 

Build started 9/20/2011 3:54:14 PM. 

C:\Program Files\Jenkins\jobs\AlphaBeta\...\AlphaSolution\AlphaSolution.sln: warning : Ignoring vcproj 'ZBM'. 
C:\Program Files\Jenkins\jobs\AlphaBeta\...\AlphaSolution\AlphaSolution.sln: warning : Don't know how to handle GlobalSection TestCaseManagementSettings, Ignoring. 
C:\Program Files\Jenkins\jobs\AlphaBeta\...\AlphaSolution\AlphaSolution.sln: warning : Failed to find project d393406d-3397-4907-a536-2a4b77512bc6 
Project "C:\Program Files\Jenkins\jobs\AlphaBeta\...\AlphaSolution\AlphaSolution.sln" (default target(s)): 
    Target ValidateSolutionConfiguration: 
     Building solution configuration "Debug|Mixed Platforms". 
    Target Build: 
     Project "C:\Program Files\Jenkins\jobs\AlphaBeta\...\AlphaSolution\AlphaCommon\AlphaCommon.csproj" (default target(s)): 
      Target PrepareForBuild: 
       Configuration: Debug Platform: AnyCPU 
      Target GenerateSatelliteAssemblies: 
      No input files were specified for target GenerateSatelliteAssemblies, skipping. 
      Target CoreCompile: 
       Tool C:\PROGRA~1\MONO-2~1.5\bin\dmcs.bat execution started with arguments: /noconfig /debug:full /debug+ /keyfile:AlphaBeta.pfx /optimize- /out:obj\Debug\AlphaCommon.dll AlphaCommon.cs Properties\AssemblyInfo.cs /target:library /define:"DEBUG;TRACE" /reference:C:\PROGRA~1\MONO-2~1.5\lib\mono\xbuild-frameworks\.NETFramework\v4.0\RedistList\..\..\..\..\4.0\System.dll /reference:C:\PROGRA~1\MONO-2~1.5\lib\mono\xbuild-frameworks\.NETFramework\v4.0\RedistList\..\..\..\..\4.0\System.Xml.Linq.dll /reference:C:\PROGRA~1\MONO-2~1.5\lib\mono\xbuild-frameworks\.NETFramework\v4.0\RedistList\..\..\..\..\4.0\System.Data.DataSetExtensions.dll /reference:C:\PROGRA~1\MONO-2~1.5\lib\mono\xbuild-frameworks\.NETFramework\v4.0\RedistList\..\..\..\..\4.0\Microsoft.CSharp.dll /reference:C:\PROGRA~1\MONO-2~1.5\lib\mono\xbuild-frameworks\.NETFramework\v4.0\RedistList\..\..\..\..\4.0\System.Data.dll /reference:C:\PROGRA~1\MONO-2~1.5\lib\mono\xbuild-frameworks\.NETFramework\v4.0\RedistList\..\..\..\..\4.0\System.Xml.dll /reference:C:\PROGRA~1\MONO-2~1.5\lib\mono\xbuild-frameworks\.NETFramework\v4.0\RedistList\..\..\..\..\4.0\System.Core.dll /warn:4 
: error CS1548: Error during assembly signing. The specified key file `AlphaBeta.pfx' has incorrect format 
      Task "Csc" execution -- FAILED 
      Done building target "CoreCompile" in project "C:\Program Files\Jenkins\jobs\AlphaBeta\...\AlphaSolution\AlphaCommon\AlphaCommon.csproj".-- FAILED 
+1

此链接里面有它的一些其他链接它会告诉你如何签署组装,所以检查了这一点。 http://msdn.microsoft.com/en-us/library/t21abc4c.aspx – MStp

回答

4

单不支持使用PKCS#12(.PFX)文件来存储用于strongnaming组件密钥。这是一个已知问题,并在Xamarin的bugzilla#725上跟踪。

解决方法是将密钥导出到.snk文件中,并在构建项目时使用该密钥。

的答案here提供的如何从一个.pfx一个.SNK例子。

+0

原谅无知,但有关于如何一个人的关键导出到'.snk'文件重复的例子,并用它构建自己的项目时? – 719016

相关问题