Pregunta

La miré a los C:\Program Files\Microsoft.NET y no puedo ver cualquier archivo SN.exe.

Tengo instalado .NET 3.5 de tiempo de ejecución; No es suficiente?

¿Fue útil?

Solución

Es necesario instalar el SDK de Windows 6.0a, no sólo el tiempo de ejecución.

Si ha instalado VS2008, encontrará que ya está instalado, y sn.exe será aquí:

C: \ Archivos de programa \ Microsoft SDKs \ Windows \ v6.0A \ Bin \ sn.exe

De lo contrario, si no lo tiene instalado VS2008, se puede descargar el SDK de forma individual aquí .

El sn.exe archivo no está disponible en el SDK. La versión actual de la SDK es 6,1, tal vez se eliminan sn.exe en esta versión.

Otros consejos

  • símbolo del sistema abierto
  • tipo cd \
  • tipo dir /s sn.exe
  • obtendrá algo de salida como

    Volume in drive C has no label.

    Volume Serial Number is XXXX-XXXX.

Directorio de C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin

11/07/2007  12:01 PM            95,728 sn.exe
              1 File(s)         95,728 bytes

Usted encontró el directorio :)
si no, no hay sn.exe en su sistema. Instalar SDK entonces.

Es parte del SDK (.NET, o ahora el SDK de Windows )

Estoy seguro de que tiene sus razones - y definitivamente hay casos donde la abundancia SN.exe es inevitable y / o apropiado (Retardo de firma para uno). (y he hizo +1 en la Q y el Aceptado A y no discuto su mérito en modo alguno por lo que no tenga en cuenta esto si no se aplica en su caso)

Tenga en cuenta que SN.exe rara vez es necesaria en la práctica - el cableado en Microft.<lang>.targets que impulsan los compiladores [y AL.exe etc.] todos [efectivamente] tomar la bandera SignAssembly en el archivo .proj en cuenta y aprobar condicionalmente en la clave para el compilador (s) etc. lo que puede hacer todo el trabajo en un solo toque de la línea de montaje (principalmente por razones de Potencia).

Esta lógica también se ocupa de la distinción entre .snk y .pfx teclas (que están protegidos por contraseña y obtener secreta en un contenedor de claves). Dependiendo de la forma, no es entonces o bien un KeyContainerName o la propiedad KeyOriginatorFile resuelto por Microsoft.Common.targets en el directorio de tiempo de ejecución - Buscar ResolveKeySource

.

Si la razón por la que tiene que hacer un SN se debe a que acaba de reescrito un ensamblaje, el mismo patrón general debe sostener, es decir Mono.Cecil y herramientas a la PostSharp (supongo, no confirmado), también es posible tomar los mismos argumentos y / o se puede hacer para hacer la línea de firma.


Microsoft.Common.targets extracto

<Target Name="ResolveKeySource" 
  Condition="$(SignManifests) == 'true' or $(SignAssembly) == 'true'">

  <ResolveKeySource ...
    KeyFile="$(AssemblyOriginatorKeyFile)"
    CertificateFile="$(ManifestKeyFile)"
    SuppressAutoClosePasswordPrompt="$(BuildingInsideVisualStudio)">
      <Output TaskParameter="ResolvedKeyFile" PropertyName="KeyOriginatorFile" ..."/>
      <Output TaskParameter="ResolvedKeyContainer" PropertyName="KeyContainerName" ... "/>

Microsoft.CSharp.targets extracto

    <Csc  ...
          KeyContainer="$(KeyContainerName)"
          KeyFile="$(KeyOriginatorFile)" />

Para completar, aquí es como para inferir mediante programación la ruta del SDK relevante para el objetivo está compilando (probado en 4.0, pero mismo enfoque es posible durante todo el camino de regreso a 2,0, es decir Microsoft.Common.targets ha procesado estos datos durante algún tiempo):

<Target Name="ResolveSNToolPath" Condition=" 'true' == '$(SignAssembly)' ">
    <PropertyGroup>
      <_SdkToolsBinDir Condition=" '' == '$(_SdkToolsBinDir)' ">$(TargetFrameworkSDKToolsDirectory)</_SdkToolsBinDir>
      <SNToolPath Condition=" '' == '$(SNToolPath)' ">$(_SdkToolsBinDir)SN.exe</SNToolPath>
    </PropertyGroup>
    <Error Condition=" 'true' == '$(SignAssembly)' AND !EXISTS( '$(SNToolPath)' )"
      Text="In order to resign the assembly, this package requires access to the SN.EXE tool from the Windows Platform SDK, which was not found.

The location derived was &quot;$(SNToolPath)&quot;.

Please either:
1) supply a correct path to your SDK Tools bin directory containing SN.EXE by setting %24(_SdkToolsBinDir) or %24(TargetFrameworkSDKToolsDirectory)
OR
2) supply a correct complete path to your SN.EXE signing tool by setting %24(SNToolPath)" />
  </Target>

Para completar totales, así es como usted aprovechar los resultados de este proceso se ejecute Sn.exe

<Target Name="ResignMyAssembly" Condition="$(SignAssembly) == 'true'">
  <Exec Condition=" '$(KeyContainerName)' != '' " 
    Command="&quot;$(SNToolPath)&quot; -Rca &quot;@(MyAssembly)&quot; &quot;$(KeyContainerName)&quot; " />
  <Exec Condition=" '$(KeyContainerName)' == '' " 
    Command="&quot;$(SlpsSdkProtectSnTool)&quot; -Ra &quot;@(MyAssembly)&quot; &quot;$(KeyOriginatorFile)&quot; " />

En ruta VS2017 se cambió a: C:\Program Files (x86)\Microsoft SDKs\Windows\vX\bin\NETFX X.X.X Tools\.

No, parece que necesita el SDK para que: (

Para su información, el tiempo de ejecución en sí no estaría bajo C:\Program Files\Microsoft.NET - todos sus archivos de vivir [sólo] en virtud de C:\Windows\Microsoft.NET\vXXXXXX\

Para VS2019 la ruta es C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ v10.0A \ bin \ netfx 4.7.2 Herramientas \ x64 \ sn.exe

Todavía ahora yo estoy incapaz de usar VS símbolo del sistema. me gusta que muestra el mensaje

** Visual Studio 2017 desarrollador Símbolo del sistema v15.8.9 ** Copyright (C) 2017 Microsoft Corporation

[vcvarsall.bat] Medio ambiente inicializado para: 'x64'

C: \ Archivos de programa (x86) \ Microsoft Visual Studio \ 2017 \ Comunidad> donde sn.exe INFORMACIÓN:. No se pudo encontrar archivos para el patrón (s) dada

Simplemente:

En las ventanas (según la versión de .NET Framework \ B8.1A .. los cambios en el camino), vaya a =>

  

C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ netfx 4.5.1   Herramientas

Escriba su sn.exe comando:

sn -i D:\XX\MYProject.UI.api\MYProject.Gateway\my_certificate.pfx VS_KEY_AD6FD8AFB39B6C43

si está protegido por contraseña que se va a querer las personas con discapacidad lo escriba

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top