Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Кто владеет VS, просьба скомпилировать dll под W2008R2

Кто владеет  VS,  просьба скомпилировать dll  под W2008R2
Я
   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
юзай компоненту для дот нет
   DES
 
2 - 12.07.21 - 13:06
(1) а попроще можешь?
   Garykom
 
3 - 12.07.21 - 13:15
(2) призови Serginio1
   Garykom
 
4 - 12.07.21 - 13:16
(3) с его "Ъ" или врап=новый COMОбъект("NetObjectToIDispatch45");
   DES
 
5 - 12.07.21 - 13:38
(3) Ну зачем же пушкой по воробьям?
   Вафель
 
6 - 12.07.21 - 13:47
а что разве простым кодом из 1с нельзя все это выполнить. вроде есть сха-1
   DES
 
7 - 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));
Возврат Хеш.ХешСумма;
    
    
ни разу не сходится с результатом из С#
   DES
 
8 - 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 в фреймворк встроен :)
   DES
 
10 - 13.07.21 - 20:31
в  какой целевой платформе компилировать проект чтобы dll зарегалось на w2008r2 64 ?
NET Standart 2.0 2.1 или  
NET Core 3.1
NET 5.0

?
   Garykom
 
11 - 13.07.21 - 20:53
(10) какие ставятся на 2008?
имхо .net 3.5 делай
   DES
 
12 - 13.07.21 - 21:20
(11) нет такого выбора. есть только это
   DES
 
13 - 13.07.21 - 21:24
(11) NET Framework 3.5 - это?
   Garykom
 
14 - 13.07.21 - 21:48
(13) угу
оно самое совместимое
   DES
 
15 - 13.07.21 - 22:16
(14) не  пойму как добраться, есть только http://prntscr.com/1av6vkg
   Garykom
 
16 - 13.07.21 - 22:29
   DES
 
17 - 14.07.21 - 07:12
(16) так я не пойму , в начале что выбирать стандарт, КОРЕ или NET ?
   DES
 
18 - 14.07.21 - 08:51
пересобрал проект под среду NET Core 2.1
все  равно не регается на w2008r2

пишет  что ли DLL неправильный или точка входа не найдена.
Что еще нужно?
   Дык ё
 
19 - 14.07.21 - 09:03
(18) регистрируешь regasm'ом?
   Serginio1
 
20 - 14.07.21 - 09:53
Делай под .Net 4.6.1, что соответсвует .Net Standard 2.0
Если Core то .Net 5 но там ограничения. Проще .Net 4.6.1 и AnyCPU и регистрация RegAsm
   DES
 
21 - 14.07.21 - 10:49
(20) пересобрал .NET Standart 2.0
0 ошибок,  0 замечаний
под w2008r2 regsvr32 my.dll ругается  Модуль загружен, но точка входа не найдена.
Это как расценивать?
   DES
 
22 - 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)
     ......
   DES
 
23 - 14.07.21 - 10:55
я уже согласен и на NetObjectToIDispatch45
но там тоже не понятно, как вызвать SHA1(XML)
   Жан Пердежон
 
24 - 14.07.21 - 11:18
(7) а сами xml в канонической форме чем отличаются?
   Жан Пердежон
 
25 - 14.07.21 - 11:27
и есть ли разница с
Хеш.Добавить(XMLbest);
?
   Serginio1
 
26 - 14.07.21 - 12:01
Зачем тебе .Net Standard выбирай.Net 4.6.1
   Serginio1
 
27 - 14.07.21 - 12:04
Ну и регистрировать нужно Regasm 32 и 64 разрядным. Используй мой РегистрацияКомСервера.exe или по аналогии
сделай батник
/users.php?id=106805" target="_blank" class="registered-user">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
   DES
 
28 - 14.07.21 - 12:07
(26) net framework 4.6.1 ?
   DES
 
29 - 14.07.21 - 12:16
(26) целевая платформа только как http://prntscr.com/1av6vkg
какую выбрать? ибо нигде не нахожу 4.6.1 подобное
   DES
 
30 - 14.07.21 - 12:23
вроде как добавил пакет http://prntscr.com/1b141dx
 
 
   DES
 
31 - 14.07.21 - 12:23
но он нигде не выбирается
   Serginio1
 
32 - 14.07.21 - 13:10
нужно установить т.н. Targeting Pack для Visual Studio через установщик или выбрав пункт "Установка других платформ...". Последнее откроет страницу на сайте Microsoft откуда нужно скачать Developer Pack для .NET 4.6.1
   Serginio1
 
33 - 14.07.21 - 13:17
Новый проект.
Выбираем Библиотека классов (.Net Framework) (двойной щелчок)
Платформа
.NET Framework 4.6.1
   SSSSS_AAAAA
 
34 - 14.07.21 - 13:24
(18) "пишет  что ли DLL неправильный или точка входа не найдена."
Это сообщение говорит о неправильных для создания нужной DLL параметрах сборки/проекта/компиляции сей DLL, а не про номер фреймворка и прочей лабуде.
Для регистрации DLL должна быть откомпилирована и собрана с определенными параметрами. Подробности в документации.
   GenAcid
 
35 - 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
   DES
 
36 - 14.07.21 - 19:49
Всем  СПС.
Завелось.


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.