Не удается импортировать следующий файл ключа: tSQLtOfficialSigningKey.pfx при выполнении сборки tSLQt.

Я пытаюсь запустить решение tSQLt локально, следуя инструкциям в файле tSQLt\Build\Install the tSQLt build.docx.

Перестроенное tSQLtCLR решение:

1>------ Rebuild All started: Project: tSQLtCLR, Configuration: Debug Any CPU ------
2>------ Rebuild All started: Project: tSQLtTestUtilCLR, Configuration: Debug Any CPU ------
3>------ Rebuild All started: Project: tSQLtExternalAccessKey, Configuration: Debug Any CPU ------
4>------ Rebuild All started: Project: UnsignedEmpty, Configuration: Debug Any CPU ------
1>  tSQLtCLR -> E:\Source\tSQLt\tSQLtCLR\tSQLtCLR\bin\Debug\tSQLtCLR.dll
2>  tSQLtTestUtilCLR -> E:\Source\tSQLt\tSQLtCLR\tSQLtTestUtilCLR\bin\Debug\tSQLtTestUtilCLR.dll
3>  tSQLtExternalAccessKey -> E:\Source\tSQLt\tSQLtCLR\tSQLtExternalAccessKey\bin\Debug\tSQLtExternalAccessKey.dll
4>  UnsignedEmpty -> E:\Source\tSQLt\tSQLtCLR\UnsignedEmpty\bin\Debug\UnsignedEmpty.dll
========== Rebuild All: 4 succeeded, 0 failed, 0 skipped ==========

Я создал самозаверяющий сертификат:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365

Затем я создал файл pfx:

openssl pkcs12 -export -out E:\Source\tSQLt\tSQLtCLR\OfficialSigningKey\tSQLtOfficialSigningKey.pfx -inkey key.pem -in cert.pem

Затем я дважды щелкнул этот новый файл pfx и импортировал его для текущего пользователя.

Наконец запустите Menu / Tools / tSQLt local Dev_tSQL и получите следующую ошибку:

+-------------------+
: Starting BUILD    :
+-------------------+
NAnt 0.92 (Build 0.92.4543.0; release; 2012-06-09)
Copyright (C) 2001-2012 Gerry Shaw
http://nant.sourceforge.net

Buildfile: file:///E:/Source/tSQLt/Build/tSQLt.build
Target framework: Microsoft .NET Framework 4.0
Target(s) specified: all 


init:


init.tSQLt:

   [delete] Deleting directory 'E:\Source\tSQLt\Build\temp'.
    [mkdir] Creating directory 'E:\Source\tSQLt\Build\temp'.

clr.compile:

     [echo] Compile CLR Command: "C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" tSQLtCLR.csproj /p:Configuration=CruiseControl /nologo
     [exec] Build started 2019-08-11 10:47:46 AM.
     [exec] Project "E:\Source\tSQLt\tSQLtCLR\tSQLtCLR\tSQLtCLR.csproj" on node 1 (default targets).
     [exec] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2482,5): error MSB3325: Cannot import the following key file: tSQLtOfficialSigningKey.pfx. The key file may be password protected. To correct this, try to import the certificate again or manually install the certificate to the Strong Name CSP with the following key container name: VS_KEY_C20B79DE0583A5C1 [E:\Source\tSQLt\tSQLtCLR\tSQLtCLR\tSQLtCLR.csproj]
     [exec] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2482,5): error MSB3321: Importing key file "tSQLtOfficialSigningKey.pfx" was canceled. [E:\Source\tSQLt\tSQLtCLR\tSQLtCLR\tSQLtCLR.csproj]
     [exec] Done Building Project "E:\Source\tSQLt\tSQLtCLR\tSQLtCLR\tSQLtCLR.csproj" (default targets) -- FAILED.
     [exec] 
     [exec] Build FAILED.
     [exec] 
     [exec] "E:\Source\tSQLt\tSQLtCLR\tSQLtCLR\tSQLtCLR.csproj" (default target) (1) ->
     [exec] (ResolveKeySource target) -> 
     [exec]   C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2482,5): error MSB3325: Cannot import the following key file: tSQLtOfficialSigningKey.pfx. The key file may be password protected. To correct this, try to import the certificate again or manually install the certificate to the Strong Name CSP with the following key container name: VS_KEY_C20B79DE0583A5C1 [E:\Source\tSQLt\tSQLtCLR\tSQLtCLR\tSQLtCLR.csproj]
     [exec]   C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2482,5): error MSB3321: Importing key file "tSQLtOfficialSigningKey.pfx" was canceled. [E:\Source\tSQLt\tSQLtCLR\tSQLtCLR\tSQLtCLR.csproj]
     [exec] 
     [exec]     0 Warning(s)
     [exec]     2 Error(s)
     [exec] 
     [exec] Time Elapsed 00:00:00.49

BUILD FAILED

E:\Source\tSQLt\Build\tSQLt.build(53,4):
External Program Failed: cmd (return code was 1)

Total time: 0.8 seconds.

+-------------------+
: BUILD FAILED      :
+-------------------+

ОБНОВИТЬ:

После того, как файл pfx был сгенерирован и 4 из них были заменены в проекте. После этого я открываю решение tSQLtCLR и перехожу к свойствам каждого проекта (кроме проекта UnsignedEmpty), затем на вкладку Signing и там я ставлю галочку «Подписать сборку», выбираю ключ. Он запрашивает пароль, который я не вводил, просто нажал OK, так как ключ был создан без пароля, затем я очищаю/пересобираю решение и получаю ошибки:

1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(3214,5): error MSB3325: Cannot import the following key file: tSQLtOfficialSigningKey.pfx. The key file may be password protected. To correct this, try to import the certificate again or manually install the certificate to the Strong Name CSP with the following key container name: VS_KEY_FAD69C25E7450957
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(3214,5): error MSB3321: Importing key file "tSQLtOfficialSigningKey.pfx" was canceled.
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(3214,5): error MSB3325: Cannot import the following key file: tSQLtOfficialSigningKey.pfx. The key file may be password protected. To correct this, try to import the certificate again or manually install the certificate to the Strong Name CSP with the following key container name: VS_KEY_3A487AA7CCDAEF2F
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(3214,5): error MSB3321: Importing key file "tSQLtOfficialSigningKey.pfx" was canceled.
3>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(3214,5): error MSB3325: Cannot import the following key file: tSQLtOfficialSigningKey.pfx. The key file may be password protected. To correct this, try to import the certificate again or manually install the certificate to the Strong Name CSP with the following key container name: VS_KEY_5C6CEC0DAE821947
3>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(3214,5): error MSB3321: Importing key file "tSQLtOfficialSigningKey.pfx" was canceled.
4>  UnsignedEmpty -> E:\Source\tSQLt\tSQLtCLR\UnsignedEmpty\bin\Debug\UnsignedEmpty.dll

person Dmitrij Kultasev    schedule 10.08.2019    source источник


Ответы (1)


Ключ действительно защищен паролем. Вам нужно перезаписать его своим ключом локально.

Убедитесь, что вы пометили файл как исключение в Git, если вы планируете сделать запрос на извлечение в будущем.

person Sebastian Meine    schedule 10.08.2019
comment
Я сгенерировал файл pfx из своего локального сертификата/ключа. Что дальше? Нужно ли мне заменить этим файл tSQLt\tSQLtCLR\OfficialSigningKey\tSQLtOfficialSigningKey.pfx? Любая конфигурация пароля? - person Dmitrij Kultasev; 10.08.2019
comment
Да, замените этот файл. Настройка пароля не требуется. - person Sebastian Meine; 11.08.2019
comment
Я обновил вопрос. Не могли бы вы взглянуть? Я все еще получаю эту ошибку. - person Dmitrij Kultasev; 11.08.2019
comment
Можете ли вы открыть решение CLR в VS и создать его там один раз? Если он строится в VS, то потом он должен работать и в скрипте. Если он не строится, он должен предоставить как можно больше информации о том, почему. - person Sebastian Meine; 11.08.2019
comment
Я пересобрал проект, и он все еще дает ту же ошибку. - person Dmitrij Kultasev; 11.08.2019
comment
Когда вы создали новый ключ, вы установили пароль? Если это так, попробуйте воссоздать его без. - person Sebastian Meine; 12.08.2019
comment
Пересоздал ключ без пароля (был введен только пароль). Заменен файл tSQLtOfficialSigningKey.pfx в 4 местах (tSQLtCKR, OfficialSigningKey, tSQLtExternalAccessKey, tSQLtTestUtilCLR). Также импортировал его в Windows, дважды щелкнув по нему (затем далее, далее...). Все еще получаю ту же ошибку. - person Dmitrij Kultasev; 12.08.2019
comment
В Visual Studio измените проект, чтобы он не включал ключ. Затем постройте его. Затем добавьте свой ключ обратно. Затем создайте его снова. Если это не поможет, выполните эти шаги еще раз, но используйте VS, чтобы создать ключ для вас. - person Sebastian Meine; 13.08.2019
comment
что значит использовать VS для создания ключа для вас? Я клонировал проект в другой каталог, следуя инструкциям (в основном нужно просто запустить файл Setup.bat). Затем откройте проект tSQtLCLR и очистите/пересоберите решение. Мне нужно было сделать что-то еще, поскольку это не помогло :( - person Dmitrij Kultasev; 13.08.2019
comment
не могли бы вы помочь? Я почти закончил основную часть разработки для подделки внешних синонимов, поэтому я хочу добавить тесты и попробовать, как дела... - person Dmitrij Kultasev; 19.08.2019
comment
docs.microsoft. com/en-us/visualstudio/ide/ - person Sebastian Meine; 19.08.2019
comment
Кстати, tSQLt разработан с использованием TDD. Чтобы ваше дополнение было принято, тесты должны одинаково хорошо охватывать вашу кодовую базу. Также подумайте обо всех крайних случаях, таких как синонимы процедур в другой базе данных, которые используют параметр типа таблицы. - person Sebastian Meine; 19.08.2019
comment
В настоящее время я поддерживаю только представления и таблицы - person Dmitrij Kultasev; 19.08.2019
comment
Я обновил вопрос, после подписания проектов решение не строится. - person Dmitrij Kultasev; 21.08.2019
comment
Теперь я рекомендовал вам использовать VS для создания нового ключа. Не похоже, что ты это сделал. - person Sebastian Meine; 21.08.2019
comment
в конце концов! Спасибо! это терпит неудачу сейчас, но по другой причине. - person Dmitrij Kultasev; 21.08.2019