Имя: Пароль:
1C
1С v8
Кто владеет 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
Всем  СПС.
Завелось.
Основная теорема систематики: Новые системы плодят новые проблемы.