.NET: type name not found in assembly

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Chris_147
  • Registratie: Juni 2005
  • Laatst online: 11-05 13:36
Situatie: ik heb een module in Tricentis Tosca die TOTP (Time-based One Time Password, SSO dus) regelt.
Bij een update van Tosca (waarbij Tosca van .NET 6.0 naar 8.0 is gegaan) werkt deze niet meer.

Ik krijg volgende foutmelding:
code:
1
2
Compile Error(s) occured when trying to compile the source Code of the embedded SpecialExecutionTask.
(72,32): error CS1069: The type name 'HMACSHA1' could not be found in the namespace 'System.Security.Cryptography'. This type has been forwarded to assembly 'System.Security.Cryptography, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' Consider adding a reference to that assembly.


Op regel 72 staat het volgende:
code:
1
var hmacSha1 = new HMACSHA1(privateKey);


Hoe ik begrepen heb dat het werkt:
- de .cs file zit in in de module in Tosca.
- wanneer deze wordt aangeroepen, compileert Tosca deze on-the-fly en voert hem uit. Daar komt deze foutmelding vandaan.
- Waar je in Visual Studio de references in je project moet zetten, moet je deze in Tricentis.Automation.Agent.dll.config zetten.
Daar staat dus:
code:
1
2
3
4
5
6
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Security.Cryptography" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>


Het lijkt dus fout te gaan omdat in .NET 8 HMACSHA1 niet meer in de Cryptography bibliotheek zit.
Volgens deze link echter wel: https://learn.microsoft.c...phy.hmacsha1?view=net-8.0

Ik heb ook op mijn eigen laptop Visual Studio geïnstalleerd, een nieuwe project Class Library aangemaakt en de .cs file er in gekopieerd.
Die kan ik perfect bouwen naar een .dll.
Op mijn laptop kan ik ook in de Object Browser in Visual Studio de Cryptography bibliotheek bekijken en zien dat er wel degelijk de functies HMACSHA1() en HMACSHA1(byte[]) in zitten.

Is misschien de referentie verkeerd dan, is de publicKeytoken (b03f5f7f11d50a3a) niet juist op mijn werklaptop?
Met Powershell kan ik dit controleren, maar ook die blijkt juist te zijn:
code:
1
2
PS C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Security\v4.0_4.0.0.0__b03f5f7f11d50a3a> [System.Reflection.Assembly]::LoadFile("C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Security\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Security.dll").FullName
System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a


Ik heb dus echt even geen idee meer.

Eerste vraag is: is HMACSHA1 wel of niet aanwezig in System.Security.Cryptography? Ik denk van wel, gezien wat ik zie op mijn eigen laptop.

Tweede vraag: Trekt Tosca misschien deze bibliotheek nog op een andere manier binnen dan enkel via de .config file?
Ik zie ook een Tricentis.Automation.Agent.deps.json bestand waar Crypto dingen in vermeld staan:
code:
1
2
3
4
5
6
7
"targets": {
    ".NETCoreApp,Version=v8.0": {
      "Tricentis.Automation.Agent/1.0.0": {
        "dependencies": {
          "System.Security.Cryptography.Pkcs": "8.0.0",
          "System.Security.Cryptography.Xml": "8.0.0",
          "System.Security.Cryptography": "8.0.0",


Die laatste regel stond er niet in. Ik heb die bijgevoegd, echter nog steeds dezelfde fout.

CoPilot zegt me dat ik in de deps.json file in de libraries sectie ook nog dit moet toevoegen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
"System.Security.Cryptography/8.0.0": {
      "type": "package",
      "serviceable": true,
      "sha512": "sha512-HQSFbakswZ1OXFz2Bt3AJlC6ENDqWeVpgqhf213xqQUMDifzydOHIKVb1RV4prayobvR3ETIScMaQdDF2hwGZA==",
      "path": "system.security.cryptography/8.0.0",
      "hashPath": "system.security.cryptography.8.0.0.nupkg.sha512"
    },  
    "System.Security.Cryptography.Algorithms/8.0.0": {
      "type": "package",
      "serviceable": true,
      "sha512": "sha512-HQSFbakswZ1OXFz2Bt3AJlC6ENDqWeVpgqhf213xqQUMDifzydOHIKVb1RV4prayobvR3ETIScMaQdDF2hwGZA==",
      "path": "system.security.cryptography.algorithms/8.0.0",
      "hashPath": "system.security.cryptography.algorithms.8.0.0.nupkg.sha512"
    },


Ik heb echter geen flauw idee wat the sha512 is. Hij verwijst dat ik moet berekenen voor de bijhorende .nupkg, maar die heb ik niet. Want geen dev environment, enkel de .NET runtime environment.

[ Voor 13% gewijzigd door Chris_147 op 09-10-2024 09:18 ]

Alle reacties


Acties:
  • +1 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 15:45

Haan

dotnetter

deps.json wordt gegenereerd, dus ik denk niet dat je daar handmatig in moet willen wroeten.

Inhoudelijk gezien lijkt het me handiger als je dit probleem bij de makers van die tool voorlegt. Hebben ze geen documentatie / changelog mbt deze update?
(lekker op tijd ook met de support op.Net 6 die over 5 weken stopt :P)

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Chris_147
  • Registratie: Juni 2005
  • Laatst online: 11-05 13:36
Nope, was niet in de release notes vermeld.

En nu krijg ik natuurlijk het verhaaltje dat customizations niet standaard ondersteund worden en wordt ik doorverwezen naar de Professional Services departement.
Wat ook weer weken kan duren.

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 17-05 22:52
HMACSHA1 zit ook in .NET 8 in die namespace. De versie die genoemd wordt is wel een beetje gek. Wil die applicatie een specifieke versie laden oid?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Viper®
  • Registratie: Februari 2001
  • Niet online
Het lijkt wel of er iets niet goed staat met references en/of er een verkeerde versie geladen probeerd te worden. Gooi de library anders eens door Ilspy om te zien welke referenties daar aan gekoppeld zijn.

Acties:
  • 0 Henk 'm!

  • michelvosje
  • Registratie: December 2009
  • Laatst online: 04-05 11:10
Ik heb ook op mijn eigen laptop Visual Studio geïnstalleerd, een nieuwe project Class Library aangemaakt en de .cs file er in gekopieerd.
Die kan ik perfect bouwen naar een .dll.
Op mijn laptop kan ik ook in de Object Browser in Visual Studio de Cryptography bibliotheek bekijken en zien dat er wel degelijk de functies HMACSHA1() en HMACSHA1(byte[]) in zitten.
Heb je al geprobeerd om dat test projectje compleet over te kopiëren naar je werklaptop en daar uit te proberen?

En misschien een gek idee. Maar kan het soms zijn dat jouw werkproject nog niet geconfigureerd is naar .Net Sdk 8.0, maar dat die nog verwijst naar 6.0? Kun je een kopie hier plaatsen (zonder gevoelige meuk) van je .csproj?

Acties:
  • 0 Henk 'm!

  • Chris_147
  • Registratie: Juni 2005
  • Laatst online: 11-05 13:36
Mijn werklaptop is redelijk dichtgetimmerd, kan ik dus geen Visual Studio installeren.

Ik vrees dat mijn uitleg niet helemaal duidelijk was.
Tricentis Tosca biedt de mogelijkheid om de functionaliteit uit te breiden met eigen .NET modules.
Staat hier beschreven:
https://documentation.tri...t/general/get_started.htm
https://documentation.tri...general/implement_set.htm
en hier:
https://documentation.tri...pecial%20execution%20task

In versie 2023 (gebaseerd op .NET 6) hadden we een module die een .cs file bevat. Deze wordt runtime gecompileerd en uitgevoerd. Dit werkte.
In versie 2024 (gebaseerd op .NET 8) werkt diezelfde module niet meer.
Ik vermoed omdat Tosca niet meer dezelfde of evenveel .NET modules aanbiedt.

Waar je in een Visual Studio project de referentie moet toevoegen aan je project, moet Tricentis dit doen voor Tosca in de .config en .deps.json bestanden (denk ik).
Ik denk dat dit in 2024 niet meer goed zit. Ik vrees dat ik hier zelf weinig aan kan doen achteraf.

Wat ook kan is een module maken met een .DLL ipv een .cs.
Deze moet niet meer gecompileerd worden en zou dus sneller moeten zijn bij uitvoer. Nadeel is dat je hem misschien zelf opnieuw moet compileren bij veranderingen.
Dit heb ik echter nog niet aan de praat gekregen. DLL gekopieerd naar %programfiles(x86)%\TRICENTIS\Tosca Testsuite\TBox.
Maar bij uitvoer krijg ik de melding dat de dll niet gevonden kan worden.

Acties:
  • 0 Henk 'm!

  • Viper®
  • Registratie: Februari 2001
  • Niet online
Chris_147 schreef op vrijdag 11 oktober 2024 @ 10:03:
Mijn werklaptop is redelijk dichtgetimmerd, kan ik dus geen Visual Studio installeren.

Ik vrees dat mijn uitleg niet helemaal duidelijk was.
Tricentis Tosca biedt de mogelijkheid om de functionaliteit uit te breiden met eigen .NET modules.
Staat hier beschreven:
https://documentation.tri...t/general/get_started.htm
https://documentation.tri...general/implement_set.htm
en hier:
https://documentation.tri...pecial%20execution%20task

In versie 2023 (gebaseerd op .NET 6) hadden we een module die een .cs file bevat. Deze wordt runtime gecompileerd en uitgevoerd. Dit werkte.
In versie 2024 (gebaseerd op .NET 8) werkt diezelfde module niet meer.
Ik vermoed omdat Tosca niet meer dezelfde of evenveel .NET modules aanbiedt.

Waar je in een Visual Studio project de referentie moet toevoegen aan je project, moet Tricentis dit doen voor Tosca in de .config en .deps.json bestanden (denk ik).
Ik denk dat dit in 2024 niet meer goed zit. Ik vrees dat ik hier zelf weinig aan kan doen achteraf.

Wat ook kan is een module maken met een .DLL ipv een .cs.
Deze moet niet meer gecompileerd worden en zou dus sneller moeten zijn bij uitvoer. Nadeel is dat je hem misschien zelf opnieuw moet compileren bij veranderingen.
Dit heb ik echter nog niet aan de praat gekregen. DLL gekopieerd naar %programfiles(x86)%\TRICENTIS\Tosca Testsuite\TBox.
Maar bij uitvoer krijg ik de melding dat de dll niet gevonden kan worden.
Ok ik dacht dat je al een gecompileerde dll library had.
Mogelijk moet je de dll in de GAC zetten mocht hij daar nog niet te vinden zijn. Dit kan met bijvoorbeeld gacutil: https://learn.microsoft.c...ools/gacutil-exe-gac-tool
gacutil /i [dll locatie]

Acties:
  • 0 Henk 'm!

  • Chris_147
  • Registratie: Juni 2005
  • Laatst online: 11-05 13:36
Volgens de documentatie van Tricentis moet hij enkel in de folder in de tool directory of in een eigen gekozen directory die je kan aangeven in Tosca settings.
Nergens vind ik iets over GAC.

Acties:
  • +3 Henk 'm!

  • Chris_147
  • Registratie: Juni 2005
  • Laatst online: 11-05 13:36
Oplossing gekregen.
Met de overgang naar .NET 8 moet je kennelijk de paden van de libraries aangeven in de parameter ReferenceLibraries.
https://documentation.tri...023.2/tboxapi/topic8.html

Wel zo handig dat Tricentis dit in de documentatie van de vorige versie zet en niet meer in de documentatie van de huidige versie.
In de vorige versie was men overgegaan op .NET 8, maar de info blijft relevant.
Pagina: 1