|
Как получить аналог C# new XmlDsigC14NTransform() | ☑ | ||
---|---|---|---|---|
0
DES
11.06.21
✎
19:33
|
Как получить доступ к методу C# из 1с8 или к аналогу?
|
|||
1
DES
11.06.21
✎
20:02
|
Думаю как получить хеш от файла XML
|
|||
2
DES
11.06.21
✎
20:03
|
нужно реализовать
XmlDsigC14NTransform c14N = new XmlDsigC14NTransform(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(content); c14N.LoadInput(xmlDoc); try { hash = c14N.GetDigestedOutput(new SHA1Managed()); } |
|||
3
Asmody
11.06.21
✎
22:29
|
||||
4
DES
11.06.21
✎
23:43
|
пытаюсь сделать сначала консольное приложение NET 5
беру пример из https://docs.microsoft.com/ru-ru/dotnet/api/system.security.cryptography.xml.xmldsigexcc14ntransform?view=net-5.0 сборка дает ошибку 1>Program.cs(66,9,66,18): error CS1069: Не удалось найти имя типа "SignedXml" в пространстве имен "System.Security.Cryptography.Xml". Этот тип был отправлен в сборку "System.Security.Cryptography.Xml, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51". Попробуйте добавить ссылку на эту сборку. как понять ? предлагает добавить ссылку по которой сам же не находит определение ! |
|||
5
Serginio1
12.06.21
✎
11:11
|
||||
6
DES
12.06.21
✎
11:15
|
(5) делаю копипасте в Visual Studio 2019 Community на Windows 10
получаю Повторная сборка начата… 1>------ Перестроение всех файлов начато: проект: My_Test_XML_hash, Конфигурация: Debug Any CPU ------ Восстановлен C:\Users\1\source\repos\My_Test_XML_hash\My_Test_XML_hash\My_Test_XML_hash.csproj (за 319 ms). 1>C:\Users\1\source\repos\My_Test_XML_hash\My_Test_XML_hash\Program.cs(65,9,65,18): error CS1069: Не удалось найти имя типа "SignedXml" в пространстве имен "System.Security.Cryptography.Xml". Этот тип был отправлен в сборку "System.Security.Cryptography.Xml, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51". Попробуйте добавить ссылку на эту сборку. 1>C:\Users\1\source\repos\My_Test_XML_hash\My_Test_XML_hash\Program.cs(65,35,65,44): error CS1069: Не удалось найти имя типа "SignedXml" в пространстве имен "System.Security.Cryptography.Xml". Этот тип был отправлен в сборку "System.Security.Cryptography.Xml, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51". Попробуйте добавить ссылку на эту сборку. 1>C:\Users\1\source\repos\My_Test_XML_hash\My_Test_XML_hash\Program.cs(71,9,71,18): error CS1069: Не удалось найти имя типа "Reference" в пространстве имен "System.Security.Cryptography.Xml". Этот тип был отправлен в сборку "System.Security.Cryptography.Xml, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51". Попробуйте добавить ссылку на эту сборку. 1>C:\Users\1\source\repos\My_Test_XML_hash\My_Test_XML_hash\Program.cs(71,35,71,44): error CS1069: Не удалось найти имя типа "Reference" в пространстве имен "System.Security.Cryptography.Xml". Этот тип был отправлен в сборку "System.Security.Cryptography.Xml, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51". Попробуйте добавить ссылку на эту сборку. 1>C:\Users\1\source\repos\My_Test_XML_hash\My_Test_XML_hash\Program.cs(75,9,75,43): error CS1069: Не удалось найти имя типа "XmlDsigEnvelopedSignatureTransform" в пространстве имен "System.Security.Cryptography.Xml". Этот тип был отправлен в сборку "System.Security.Cryptography.Xml, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51". Попробуйте добавить ссылку на эту сборку. 1>C:\Users\1\source\repos\My_Test_XML_hash\My_Test_XML_hash\Program.cs(75,54,75,88): error CS1069: Не удалось найти имя типа "XmlDsigEnvelopedSignatureTransform" в пространстве имен "System.Security.Cryptography.Xml". Этот тип был отправлен в сборку "System.Security.Cryptography.Xml, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51". Попробуйте добавить ссылку на эту сборку. 1>C:\Users\1\source\repos\My_Test_XML_hash\My_Test_XML_hash\Program.cs(115,9,115,18): error CS1069: Не удалось найти имя типа "SignedXml" в пространстве имен "System.Security.Cryptography.Xml". Этот тип был отправлен в сборку "System.Security.Cryptography.Xml, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51". Попробуйте добавить ссылку на эту сборку. 1>C:\Users\1\source\repos\My_Test_XML_hash\My_Test_XML_hash\Program.cs(115,35,115,44): error CS1069: Не удалось найти имя типа "SignedXml" в пространстве имен "System.Security.Cryptography.Xml". Этот тип был отправлен в сборку "System.Security.Cryptography.Xml, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51". Попробуйте добавить ссылку на эту сборку. 1>Сборка проекта "My_Test_XML_hash.csproj" завершена с ошибкой. ========== Перестроение всех проектов: успешно: 0, с ошибками: 1, пропущено: 0 ========== |
|||
7
DES
12.06.21
✎
11:15
|
VS не тот?
|
|||
8
Serginio1
12.06.21
✎
11:20
|
Тебе точно не на этот сайт!
если плохо с английским https://ru.stackoverflow.com/ http://rsdn.org/ Ну ставь последнюю 10.1 и в Целевая рабочая среда .NET 5.0 и установи если не установлена |
|||
9
DES
12.06.21
✎
12:01
|
(8) поясни, должен ли пример компилироваться без ошибок?
Или имеется ввиду что какие то определения ясны по умолчанию? (мол добавьте сами) |
|||
10
DES
12.06.21
✎
12:01
|
(8) я поставил последнюю из их сайта
|
|||
11
Asmody
12.06.21
✎
12:32
|
(9) а ты думал в сказку попал? "Взрослые" языки – это боль и страданиек
|
|||
12
Serginio1
12.06.21
✎
12:55
|
А ты в нугетах System.Security.Cryptography.Xml установил?
|
|||
13
DES
12.06.21
✎
15:12
|
(12) Спасибо
|
|||
14
DES
12.06.21
✎
15:51
|
а как byte[20] = 157 187 72 143 ... 230
преобразовать в строку ? |
|||
15
DES
12.06.21
✎
19:31
|
а почему не доступна галка
Регистрация для COM-взаимодействия на VS2019 ? http://prntscr.com/156341y |
|||
16
Serginio1
13.06.21
✎
12:36
|
https://docs.microsoft.com/ru-ru/dotnet/core/native-interop/expose-components-to-com
Не на том форуме пишешь. Я сюда редко захожу, а кроме меня как видишь мало кто отвечает |
|||
17
Serginio1
13.06.21
✎
12:44
|
||||
18
DES
13.06.21
✎
16:10
|
А НЕТ КОРЕ отличается от NET 5?
это разные сущности? |
|||
19
DES
13.06.21
✎
16:11
|
для 1с8 нужен нет фрейворк или net 5 тоже ?
|
|||
20
DES
13.06.21
✎
16:14
|
создал новый проект на net5.0
все удалил, добавил //1. подключаем необходимые пространства имен using System; using System.Runtime.InteropServices; //2. описываем наше пространство имен, собственно так и будет называется наш COM-объект namespace HowToComObjectFor1C { //3. объявляем интерфейс для класса, создаем GUID с помощью утилиты "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\guidgen.exe" поясняю, запускаем утилиту устанавливаем значение на п.4 нажимаем Copy переносим в наш код: [Guid("7744AACB-9194-46bf-81AF-9DA73EE687DC")] internal interface IMyClass { [DispId(1)] //4. описываем методы которые можно будет вызывать из вне string PrintIn1C(string mymessage); } //5. определим интерфейс для COM-событий(GUID получаем и записываем с помощью утилиты guidgen.exe) [Guid("77DD7E62-7D82-4301-993C-B7D919430990"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] public interface IMyEvents { } //6. описываем класс реализующий интерфейсы(GUID получаем и записываем с помощью утилиты guidgen.exe) [Guid("77EE0677-884A-4eeb-A3BD-D407844C0C70"), ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(IMyEvents))] public class MyClass : IMyClass //название нашего класса MyClass { public string PrintIn1C(string mymessage) { return mymessage; } } } все создается без ошибок, но не регистрируется regasm пишет нет каких то ссылок на модули |
|||
21
DES
13.06.21
✎
16:16
|
(16) а на какой не редко?
|
|||
22
DES
13.06.21
✎
21:46
|
Может кто то скинуть простейший пример COM dll ?
с одной функцией |
|||
23
Serginio1
14.06.21
✎
14:32
|
.Net 5 это продолжение .Net Core
(19) Зависит от того как скомпилируешь с зависимостями или без. Но https://docs.microsoft.com/ru-ru/dotnet/core/native-interop/expose-components-to-com#sample Автономные развертывания COM-компонентов не поддерживаются. Поддерживаются только зависящие от платформы развертывания COM-компонентов. Посмотри примеры https://github.com/dotnet/samples/tree/main/core/extensions/COMServerDemo Только выбери .Net 5 (20) Читай ссылки которые я даю. Какой regasm? https://docs.microsoft.com/ru-ru/dotnet/core/native-interop/expose-components-to-com#generate-the-com-host Регистрация узла COM для модели COM Откройте командную строку с повышенными привилегиями и запустите regsvr32 ProjectName.comhost.dll. Это приведет к регистрации всех предоставленных объектов .NET в модели COM. |
|||
24
DES
15.06.21
✎
09:29
|
нарисовал вот такое
using System; using System.Runtime.InteropServices; namespace COMServerDES { [ComVisible(true)] [Guid("4C23DF7D-2925-4508-A670-7929382A5D32")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IServer { double ComputePi(); } [ComVisible(true)] [Guid("5553D96D-D6E0-4B69-937C-E3D8FCE913A1")] public class Server : IServer { double IServer.ComputePi() { double sum = 0.0; int sign = 1; for (int i = 0; i < 1024; ++i) { sum += sign / (2.0 * i + 1.0); sign *= -1; } return 4.0 * sum; } } [Guid("6844AACB-9194-46bf-81AF-9DA73EE687DC")] internal interface IMyClass { [DispId(1)] //4. описываем методы которые можно будет вызывать из вне string PrintIn1C(string mymessage); } [Guid("87279FEB-3D56-4635-A400-B2FE3814B4B1"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] public interface IMyEvents { } [Guid("FF9DF26B-4AEC-4918-A4C4-45BE9073F817"), ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(IMyEvents))] public class MyClass : IMyClass //название нашего класса MyClass { public string PrintIn1C(string mymessage) { return mymessage; } } } все компилируется, регистрируется, в 1с8 подключается как Server = Новый COMОбъект("COMServerDES.Server"); НО! Сообщить(Server.ComputePi()); Сообщить(Server.PrintIn1C("Чьёртпобери")); не выполняются : Метод объекта не обнаружен (ComputePi) что не так еще? |
|||
25
Serginio1
15.06.21
✎
10:04
|
internal interface IMyClass
Зачем тебе internal |
|||
26
Serginio1
15.06.21
✎
10:19
|
И зачем InterfaceIsIUnknown
Дделай InterfaceIsDual |
|||
27
Serginio1
15.06.21
✎
10:26
|
Да еще советую прописывать DispId явно
https://docs.microsoft.com/ru-ru/dotnet/api/system.runtime.interopservices.dispidattribute?view=netframework-4.8 |
|||
28
Serginio1
15.06.21
✎
10:31
|
Ну и пропиши явно
|
|||
29
Serginio1
15.06.21
✎
10:31
|
[ProgId("COMServerDES.Server")]
|
|||
30
Salimbek
15.06.21
✎
11:33
|
(0) Может вам штатными средствами воспользоваться? Например: https://infostart.ru/1c/articles/284214/
и тут Serginio еще комментировал: ХешированиеДанных в 1с8 для обмена ссайтом |
|||
31
DES
15.06.21
✎
11:36
|
(26) (27) ты так спрашиваешь "зачем" как будто я больше тебя знаю.
Я не знаю, я понадергал из разных примеров до кучи, в надежде что заработает, ибо эти примеры по отдельности не работают |
|||
32
DES
15.06.21
✎
11:36
|
У меня находит 1с интерфейс dll - а методов в ней не находит.
|
|||
33
DES
15.06.21
✎
13:29
|
(30) через 1с8 хеш файла =
9F31A5C8D3C93AF8B7F21F1CE2EF6ABC49852DB4 а через C# byte[] hash = transform.GetDigestedOutput(new SHA1Managed()); 0870CD8372DAC848589D7CB73E09C37AC878CA81 |
|||
34
Serginio1
15.06.21
✎
13:55
|
(32) Тебе и интерфейс не нужен.
[ComVisible(true)] [ClassInterface(ClassInterfaceType.AutoDual)] [ProgId("COMServerDES.Server")] public class Server { [ComVisible(true)] [DispId(1)] public double ComputePi() { double sum = 0.0; int sign = 1; for (int i = 0; i < 1024; ++i) { sum += sign / (2.0 * i + 1.0); sign *= -1; } return 4.0 * sum; } } |
|||
35
DES
15.06.21
✎
14:14
|
(34) СПС !
|
|||
36
DES
15.06.21
✎
14:37
|
Итого под VS2019 NET5
простенький рабочий код namespace COMServerDES { [ComVisible(true)] [Guid("4C23DF7D-2925-4508-A670-7929382A5D32")] [InterfaceType(ComInterfaceType.InterfaceIsDual)] public interface IServer { double ComputePi(int N); string PrintIn1C(string mymessage); } [Guid("5553D96D-D6E0-4B69-937C-E3D8FCE913A1")] [ComVisible(true)] [ClassInterface(ClassInterfaceType.AutoDual)] [ProgId("COMServerDES.Server")] public class Server { [ComVisible(true)] [DispId(1)] public string PrintIn1C(string mymessage) { return mymessage; } public double ComputePi(int N) { double sum = 0.0; int sign = 1; for (int i = 0; i < N; ++i) { sum += sign / (2.0 * i + 1.0); sign *= -1; } return 4.0 * sum; } } } |
|||
37
DES
15.06.21
✎
14:39
|
только "ClassInterfaceType.AutoDual" является устаревшим: 'Support for IDispatch may be unavailable in future releases.'
|
|||
38
DES
15.06.21
✎
14:46
|
вот так тоже работоспособно:
using System; using System.Runtime.InteropServices; namespace COMServerDES { [ComVisible(true)] [Guid("4C23DF7D-2925-4508-A670-7929382A5D32")] [InterfaceType(ComInterfaceType.InterfaceIsDual)] public interface IServer { double ComputePi(int N); string PrintIn1C(string mymessage); } [Guid("5553D96D-D6E0-4B69-937C-E3D8FCE913A1")] [ComVisible(true)] [ProgId("COMServerDES.Server")] public class Server { [ComVisible(true)] [DispId(1)] public string PrintIn1C(string mymessage) { return mymessage + " " + mymessage; } public double ComputePi(int N) { double sum = 0.0; int sign = 1; for (int i = 0; i < N; ++i) { sum += sign / (2.0 * i + 1.0); sign *= -1; } return 4.0 * sum; } } } |
|||
39
DES
15.06.21
✎
15:22
|
еще можно заменить файл ИмяПроекта.csproj на этот текст (удобно регать результирующую dll)
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <!-- COM servers must define a framework to use in situations where a CLR instance is not already present in the process. Note that since the COM server may be activated in a process where the CLR must be activated, both the projects *.runtimeconfig.json and *.deps.json files must be bundled with the server itself. In the following example, the following files are needed to deploy the COM server: COMServer.comhost.dll COMServer.dll COMServer.deps.json COMServer.runtimeconfig.json In a RegFree COM scenario, the following file must also be deployed: COMServer.X.manifest --> <TargetFramework>net5.0</TargetFramework> <!-- Indicate the assembly is providing a COM server --> <EnableComHosting>True</EnableComHosting> <!-- Generate a RegFree COM manifest --> <EnableRegFreeCom Condition="'$(RegFree)' == 'True'">True</EnableRegFreeCom> </PropertyGroup> <ItemGroup> <!-- Used in lieu of a Primary Interop Assembly (PIA) --> <Compile Include="../COMContract/*.cs" /> </ItemGroup> <Target Name="ServerUsage" Condition="'$(RegFree)' != 'True'" AfterTargets="Build"> <Message Importance="High" Text="%0a************************************%0a*** $(MSBuildProjectName) usage instructions ***%0a************************************" /> <Message Importance="High" Text="The server must be COM registered in order to activate.%0aThe following commands must be executed from an elevated command prompt." /> <Message Importance="High" Text="Register:%0a regsvr32.exe "$(ProjectDir)$(OutputPath)$(ComHostFileName)"" /> <Message Importance="High" Text="Unregister:%0a regsvr32.exe /u "$(ProjectDir)$(OutputPath)$(ComHostFileName)"" /> </Target> <Target Name="ServerUsage_RegFree" Condition="'$(RegFree)' == 'True'" AfterTargets="Build"> <Message Importance="High" Text="%0a************************************%0a*** $(MSBuildProjectName) usage instructions ***%0a************************************" /> <Message Importance="High" Text="A RegFree COM manifest has been created for the server.%0aThe manifest '@(RegFreeComManifest->'%(Filename)%(Extension)')' must be included during server deployment.%0aThe COMServer project will copy all required outputs to the COMClient output directory." /> <ItemGroup> <ServerOutput Include="$(OutputPath)*.dll" /> <ServerOutput Include="$(OutputPath)*.runtimeconfig.json" /> <ServerOutput Include="$(OutputPath)*.deps.json" /> <ServerOutput Include="$(OutputPath)*.manifest" /> </ItemGroup> <!-- Deploy all required server outputs --> <Copy SourceFiles="@(ServerOutput)" DestinationFolder="../COMClient/$(OutputPath)" /> </Target> <Target Name="Clean_RegFree" AfterTargets="Clean"> <ItemGroup> <ServerOutputToDelete Include="../COMClient/$(OutputPath)COMServer.*" /> </ItemGroup> <!-- Cleanup deployed server outputs --> <Delete Files="@(ServerOutputToDelete)" /> </Target> </Project> |
|||
40
DES
15.06.21
✎
17:18
|
ну и что требовалось с самого начала
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 ""; } } } } и добавить В управление пакетами NuGet... "System.Security.Cryptography.Xml" |
|||
41
DES
15.06.21
✎
18:10
|
все зашибись но только для w10
А блин под w2008r2 не регится, говорит точки входа не найдено |
|||
42
oleg_km
15.06.21
✎
18:35
|
(41) А ты точно компьютерщик?
https://docs.microsoft.com/ru-ru/dotnet/core/install/windows?tabs=net50 win2008r2 не поддерживается |
|||
43
polosov
15.06.21
✎
18:38
|
(41) А чем получение хеша в 1С не нравится?
|
|||
44
polosov
15.06.21
✎
18:42
|
+(43) Хеширование = Новый ХешированиеДанных(ХешФункция.SHA1);
|
|||
45
DES
15.06.21
✎
20:33
|
(44) см (33)
|
|||
46
DES
15.06.21
✎
20:40
|
(42) может установка доп. зависимостей поможет неточно компьюторщику?
|
|||
47
Serginio1
15.06.21
✎
20:42
|
(43) https://docs.microsoft.com/ru-ru/dotnet/api/system.security.cryptography.xml.xmldsigc14ntransform?view=dotnet-plat-ext-5.0
Представляет преобразование XML-канонизации C14N для цифровой подписи в соответствии с определением консорциума W3C без комментариев. |
|||
48
DES
15.06.21
✎
20:42
|
как запустить все это DLL под wserver 2008r2 ?
|
|||
49
DES
15.06.21
✎
20:54
|
(47) это на какую тему?
|
|||
50
oleg_km
15.06.21
✎
21:07
|
(48) Перепиши на .NET Core 2.1
https://github.com/dotnet/core/blob/main/release-notes/2.1/2.1-supported-os.md |
|||
51
DES
15.06.21
✎
22:47
|
(50) легко сказать, там даже нет в меню Собрать проект
|
|||
52
polosov
15.06.21
✎
22:57
|
(45) У тебя в XML русские символы небось?
|
|||
53
DES
16.06.21
✎
00:42
|
(52) нет, только анг
|
|||
54
Salimbek
16.06.21
✎
07:26
|
(33) Там, в темах, тоже писали, что подписи не сходятся. И находили другие варианты. Например это: https://infostart.ru/ajax/comment_pub.php?t=111033&c=14
|
|||
55
Salimbek
16.06.21
✎
07:28
|
+(54) И еще такое нашел: https://infostart.ru/1c/articles/1230060/
|
|||
56
Salimbek
16.06.21
✎
08:16
|
+ И еще в комментах ссылку на код из типовых: https://forum.infostart.ru/ajax/comment_pub.php?t=167432&c=41
|
|||
57
DES
16.06.21
✎
15:33
|
наверно текст и XML по разному хешируется ?
new XmlDsigC14NTransform() - матерится когда на входе не легитимный XML |
|||
58
Жан Пердежон
16.06.21
✎
16:35
|
ПреобразованиеККаноническомуXML (ConversionToCanonicalXML)
КанонизироватьВПоток(CanonicalizeToString) КанонизироватьВСтроку (CanonicalizeToString) КанонизироватьВФайл (CanonicalizeToFile) // Префиксы для включения используются в алгоритме исключающего канонического XML (см. стандарт W3C Exclusive XML Canonicalization - https://www.w3.org/TR/xml-exc-c14n/). |
|||
59
Жан Пердежон
16.06.21
✎
16:38
|
ХешированиеДанных (DataHashing)
Свойства: ХешСумма (HashSum) ХешФункция (HashFunction) Описание: Реализует инкрементальный расчет хеш-суммы по добавленным данным. Способ расчета и тип вычисляемого значения определяются типом хеш-функции. |
|||
60
Serginio1
16.06.21
✎
19:10
|
(51) Сделай под 4.6.1 https://support.microsoft.com/ru-ru/topic/платформа-net-framework-4-6-1-автономный-установщик-windows-842e545a-bad5-c538-e491-578d017e677c
И можешь мою компоненту использовать без всяких комов |
|||
61
DES
16.06.21
✎
19:45
|
(58) а как использовать ?
что то нет в инете примера |
|||
62
DES
16.06.21
✎
22:40
|
(60) как ?
|
|||
63
Serginio1
17.06.21
✎
10:29
|
||||
64
Жан Пердежон
17.06.21
✎
15:37
|
(61) первая ссылка в яндексе
https://1centerprise8.blogspot.com/2015/02/xml.html |
|||
65
DES
17.06.21
✎
20:46
|
(63) Я про врап=новый COMОбъект("NetObjectToIDispatch45");
помню. Но как и из чего добывать XmlDsigC14NTransform() чтобы обертывать? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |