IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

nuspec et dll statiquement liée


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut nuspec et dll statiquement liée
    Bonjour,

    J'ai un projet en code managé qui wrappe openssl mais qui est statiquement liée aux dlls libeay32 et ssleay32.
    Comment je peux faire avec mon fichier nuspec pour en sorte que ces dll soient automatiquement incluses en tant que contenu dans le projet et placée dans le répertoire de mon projet ?

    Voici un aperçu de ce que j'ai déjà essayé
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?xml version="1.0" encoding="utf-8"?>
    <package>
      <metadata>
        <id>External.ManagedOpenSsl-VS2015</id>
        <version>1.0.0</version>
    	<authors>Unknown</authors>
    	<owners>Unknown</owners>
        <description>ManagedOpenSsl-VS2015</description>
        <!-->releaseNotes></releaseNotes-->
        <tags></tags>
    	<!--<references>
    		<reference file="ManagedOpenSsl.dll" />
    	</references>-->
      </metadata>
      <files>
    	<file src="..\bin\Debug\ManagedOpenSsl.dll" target="lib" />
    	<!--<file src="..\bin\Debug\ManagedOpenSsl.dll" target="ref" />
    	<file src="..\bin\Debug\ssleay32.dll" target="lib" />
    	<file src="..\bin\Debug\libeay32.dll" target="lib" />-->
      </files>
    </package>

  2. #2
    Invité de passage
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 1
    Par défaut Des news ?
    Bonjour, j'ai exactement le même problème et je cherche une solution.
    Avez-vous eu des news suite à votre demande et une solution ?

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Comme, j'ai finalement changé d'idée, je ne suis pas revenu sur ce post.
    Ce que je voulais faire, c'est installer les DLL dans un répertoire "_RuntimeAssemblies".

    Puisqu'il s'agit de ma demande et que cette solution répondait à mon besoin, je passe en résolu.

    Je me suis basé sur la technique détaillée ici :
    https://social.msdn.microsoft.com/Fo...lstudiogeneral

    Voici ce que j'ai fait, il faudra l'adapter à ton besoin.

    Dans mon nuspec :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?xml version="1.0" encoding="utf-8"?>
    <package>
      <metadata>
        <id>ManagedOpenSsl.RuntimeAssemblies</id>
        <version>1.1.0</version>
        <authors>zdm</authors>
        <owners>zdm</owners>
        <licenseUrl>https://www.nuget.org/packages/zdm.ManagedOpenSsl/1.1.0</licenseUrl>
        <projectUrl>https://www.nuget.org/packages/zdm.ManagedOpenSsl/1.1.0</projectUrl>
        <iconUrl>https://nuget.org/Content/gallery/img/default-package-icon.svg</iconUrl>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>OpenSSL on .NET Standard 2.0.</description>
        <copyright>None</copyright>
        <tags></tags>
      </metadata>
      <files>  
        <file src="RuntimeAssemblies\bin\Release\ManagedOpenSsl.dll" target="linked\" />
        <file src="RuntimeAssemblies\bin\Release\libeay32.dll" target="linked\" />
        <file src="RuntimeAssemblies\bin\Release\ssleay32.dll" target="linked\" />
        <file src="install.ps1" target="tools\" />
        <file src="uninstall.ps1" target="tools\" />
      </files>
    </package>

    install.ps1 et uninstall.ps1 sont situé à coté du nuspec.

    Le contenu de install.ps1
    Code PS1 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    param($installPath, $toolsPath, $package, $project)
     
    $linkedItemsPath = [System.IO.Path]::Combine($installPath, "linked")
     
    $found = $false
    foreach($runtime in $project.ProjectItems)
    {
        if ($runtime.Name -ieq "_RuntimeAssemblies")
        {
            echo "_RuntimeAssemblies directory found"
            $found = $true
            break
        } 
    }
     
    if (-not($found))
    {
        echo "Creates _RuntimeAssemblies directory"
        $runtime = $project.ProjectItems.AddFolder("_RuntimeAssemblies")
    }
     
    foreach($item in Get-ChildItem $linkedItemsPath)
    { 
        $file = [System.IO.Path]::GetFileName($item.FullName)
        echo "Links $file"
     
        $projectItem = $runtime.ProjectItems.AddFromFile($item.FullName)
    	$projectItem.Properties.Item("BuildAction").Value = 0; # None
        $projectItem.Properties.Item("CopyToOutputDirectory").Value = 2; # Copy if newer
    }

    Le contenu de uninstall.ps1
    Code PS1 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    param($installPath, $toolsPath, $package, $project)
     
    $linkedItemsPath = [System.IO.Path]::Combine($installPath, "linked")
     
    $found = $false
    foreach($runtime in $project.ProjectItems)
    {
        if ($runtime.Name -ieq "_RuntimeAssemblies")
        {
            $found = $true
            break
        } 
    }
     
    if ($found)
    {
        foreach($item in Get-ChildItem $linkedItemsPath)
        {
            $projectItem = $runtime.ProjectItems | Where-Object { $_.Name -eq $item.Name }
            $projectItem.Remove()
        }
    }
    else
    {
        echo "_RuntimeAssemblies directory NOT found"
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation de DLL statique
    Par Pikxee dans le forum Qt
    Réponses: 1
    Dernier message: 22/09/2011, 12h26
  2. Dll statique ou dynamique
    Par 3aychoucha dans le forum C++
    Réponses: 4
    Dernier message: 18/05/2011, 10h45
  3. Lier un dll statiquement avec visual
    Par alpha_one_x86 dans le forum Visual C++
    Réponses: 7
    Dernier message: 11/06/2009, 12h19
  4. Erreur de compilation lie a une dll
    Par yanndublanche dans le forum C++
    Réponses: 1
    Dernier message: 08/12/2004, 11h38
  5. Appel de plusieurs dll en statique
    Par jakouz dans le forum Langage
    Réponses: 6
    Dernier message: 28/06/2004, 10h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo