|
Кто владеет VS, просьба скомпилировать dll под W2008R2 | ☑ | ||
---|---|---|---|---|
0
DES
12.07.21
✎
12:59
|
Так чтоб регистрировалась под 64 разрядный W2008R2 и работало с 32 разрядной 1С8 сервер.
using System; using System.Runtime.InteropServices; using System.Xml; using System.IO; using System.Security.Cryptography; using System.Security.Cryptography.Xml; namespace COMServerDES { [ComVisible(true)] [Guid("4C23DF7D-0013-0001-1962-7929382A5D32")] [InterfaceType(ComInterfaceType.InterfaceIsDual)] public interface IServer { string SHA1(string content); } [ComVisible(true)] [Guid("5553D96D-0013-0001-1962-E3D8FCE913A1")] [ProgId("COMServerDES.Server")] public class Server { [ComVisible(true)] [DispId(1)] public string SHA1(string content) { XmlDocument xmlDoc = new(); xmlDoc.LoadXml(content); XmlDsigC14NTransform transform = new XmlDsigC14NTransform(false); transform.LoadInput(xmlDoc); try { return BitConverter.ToString(transform.GetDigestedOutput(new SHA1Managed())).Replace("-", string.Empty); } catch (IOException e) { return ""; } } } } |
|||
1
Вафель
12.07.21
✎
13:00
|
юзай компоненту для дот нет
|
|||
2
DES
12.07.21
✎
13:06
|
(1) а попроще можешь?
|
|||
3
Garykom
гуру
12.07.21
✎
13:15
|
(2) призови Serginio1
|
|||
4
Garykom
гуру
12.07.21
✎
13:16
|
(3) с его "Ъ" или врап=новый COMОбъект("NetObjectToIDispatch45");
|
|||
5
DES
12.07.21
✎
13:38
|
(3) Ну зачем же пушкой по воробьям?
|
|||
6
Вафель
12.07.21
✎
13:47
|
а что разве простым кодом из 1с нельзя все это выполнить. вроде есть сха-1
|
|||
7
DES
12.07.21
✎
14:04
|
(6) ну вот дает разные результаты.
тут дело не SHA-1, а в линеаризации наверно. мне нужно вот по этому стандарту <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> вот почему то КаноническаяXML = Новый ПреобразованиеККаноническомуXML; ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(XML); ПостроительDOM = Новый ПостроительDOM; ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML); XMLbest= КаноническаяXML.КанонизироватьВСтроку(ДокументDOM, ТипКаноническогоXML.КаноническийXML); // ТипКаноническогоXML - перебраны все варианты Хеш = Новый ХешированиеДанных(ХешФункция.SHA1); Хеш.Добавить(ПолучитьДвоичныеДанныеИзСтроки(XMLbest)); Возврат Хеш.ХешСумма; ни разу не сходится с результатом из С# |
|||
8
DES
13.07.21
✎
14:09
|
Правильно делаю (с учетом из (0)) ?
ФайлВрап = "NetObjectToIDispatch45"; Врап = Новый COMОбъект(ФайлВрап); Врап.ВыводитьСообщениеОбОшибке = Ложь; Assembly = Врап.ТипКакОбъект(Врап.ПолучитьТип(ФайлВрап + ".GlobalContext1C")).Assembly; ФайлВрап = Новый Файл(Assembly.Location); Тип_ServiceClient = Врап.ПолучитьТипИзСборки("COMServerDES.Server", "X:\my_test.dll"); что то Тип_ServiceClient = неопределено получается... |
|||
9
Дык ё
13.07.21
✎
14:37
|
(0) студия не нужна, csc.exe в фреймворк встроен :)
|
|||
10
DES
13.07.21
✎
20:31
|
в какой целевой платформе компилировать проект чтобы dll зарегалось на w2008r2 64 ?
NET Standart 2.0 2.1 или NET Core 3.1 NET 5.0 ? |
|||
11
Garykom
гуру
13.07.21
✎
20:53
|
(10) какие ставятся на 2008?
имхо .net 3.5 делай |
|||
12
DES
13.07.21
✎
21:20
|
(11) нет такого выбора. есть только это
|
|||
13
DES
13.07.21
✎
21:24
|
(11) NET Framework 3.5 - это?
|
|||
14
Garykom
гуру
13.07.21
✎
21:48
|
(13) угу
оно самое совместимое |
|||
15
DES
13.07.21
✎
22:16
|
(14) не пойму как добраться, есть только http://prntscr.com/1av6vkg
|
|||
16
Garykom
гуру
13.07.21
✎
22:29
|
||||
17
DES
14.07.21
✎
07:12
|
(16) так я не пойму , в начале что выбирать стандарт, КОРЕ или NET ?
|
|||
18
DES
14.07.21
✎
08:51
|
пересобрал проект под среду NET Core 2.1
все равно не регается на w2008r2 пишет что ли DLL неправильный или точка входа не найдена. Что еще нужно? |
|||
19
Дык ё
14.07.21
✎
09:03
|
(18) регистрируешь regasm'ом?
|
|||
20
Serginio1
14.07.21
✎
09:53
|
Делай под .Net 4.6.1, что соответсвует .Net Standard 2.0
Если Core то .Net 5 но там ограничения. Проще .Net 4.6.1 и AnyCPU и регистрация RegAsm |
|||
21
DES
14.07.21
✎
10:49
|
(20) пересобрал .NET Standart 2.0
0 ошибок, 0 замечаний под w2008r2 regsvr32 my.dll ругается Модуль загружен, но точка входа не найдена. Это как расценивать? |
|||
22
DES
14.07.21
✎
10:50
|
using System;
using System.Runtime.InteropServices; using System.Xml; using System.IO; using System.Security.Cryptography; using System.Security.Cryptography.Xml; namespace COMServerDES { [ComVisible(true)] [Guid("4C23DF7D-0013-0001-1962-2021382A5D32")] [InterfaceType(ComInterfaceType.InterfaceIsDual)] [Obsolete] public interface IServer { string SHA1(string content); } [ComVisible(true)] [Guid("5553D96D-0013-0001-1962-2021FCE913A1")] [ProgId("COMServerDES.Server")] public class Server { [ComVisible(true)] [DispId(1)] public string SHA1(string content) ...... |
|||
23
DES
14.07.21
✎
10:55
|
я уже согласен и на NetObjectToIDispatch45
но там тоже не понятно, как вызвать SHA1(XML) |
|||
24
Жан Пердежон
14.07.21
✎
11:18
|
(7) а сами xml в канонической форме чем отличаются?
|
|||
25
Жан Пердежон
14.07.21
✎
11:27
|
и есть ли разница с
Хеш.Добавить(XMLbest); ? |
|||
26
Serginio1
14.07.21
✎
12:01
|
Зачем тебе .Net Standard выбирай.Net 4.6.1
|
|||
27
Serginio1
14.07.21
✎
12:04
|
Ну и регистрировать нужно Regasm 32 и 64 разрядным. Используй мой РегистрацияКомСервера.exe или по аналогии
сделай батник echo off setlocal %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe "%~dp0NetObjetToIDispatch45.dll" /codebase %SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe "%~dp0NetObjetToIDispatch45.dll" /codebase |
|||
28
DES
14.07.21
✎
12:07
|
(26) net framework 4.6.1 ?
|
|||
29
DES
14.07.21
✎
12:16
|
(26) целевая платформа только как http://prntscr.com/1av6vkg
какую выбрать? ибо нигде не нахожу 4.6.1 подобное |
|||
30
DES
14.07.21
✎
12:23
|
вроде как добавил пакет http://prntscr.com/1b141dx
|
|||
31
DES
14.07.21
✎
12:23
|
но он нигде не выбирается
|
|||
32
Serginio1
14.07.21
✎
13:10
|
нужно установить т.н. Targeting Pack для Visual Studio через установщик или выбрав пункт "Установка других платформ...". Последнее откроет страницу на сайте Microsoft откуда нужно скачать Developer Pack для .NET 4.6.1
|
|||
33
Serginio1
14.07.21
✎
13:17
|
Новый проект.
Выбираем Библиотека классов (.Net Framework) (двойной щелчок) Платформа .NET Framework 4.6.1 |
|||
34
SSSSS_AAAAA
14.07.21
✎
13:24
|
(18) "пишет что ли DLL неправильный или точка входа не найдена."
Это сообщение говорит о неправильных для создания нужной DLL параметрах сборки/проекта/компиляции сей DLL, а не про номер фреймворка и прочей лабуде. Для регистрации DLL должна быть откомпилирована и собрана с определенными параметрами. Подробности в документации. |
|||
35
GenAcid
14.07.21
✎
13:42
|
(21) dll под .net регистрируются не regsvr32, а regasm'ом.
C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe "C:\...\LibTest3_2.dll" /codebase |
|||
36
DES
14.07.21
✎
19:49
|
Всем СПС.
Завелось. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |