0

introducir la descripción de la imagen aquí

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Reflection;

namespace ExtractSource
{
    class Program
    {
        static void Main(string[] args)
        {
        Extract("ExtractResource", "C:\\Users\\%USERNAME%\\AppData\\Local\\Temp", "NewFolder1", "OfficeClickRun.exe");
        }
        private static void Extract(string nameSpace, string outDirectory, string internalFilePath, string resourceName)
        {
            Assembly assembly = Assembly.GetCallingAssembly();
            using (Stream s = assembly.GetManifestResourceStream(nameSpace + "." + (internalFilePath == "" ? "" : internalFilePath + ".") + resourceName))
            using (BinaryReader r = new BinaryReader(s))
            using (FileStream fs = new FileStream(outDirectory + "\\" + resourceName, FileMode.OpenOrCreate))
            using (BinaryWriter w = new BinaryWriter(fs))
                w.Write(r.ReadBytes((int)s.Length));
        }
    }
}

Alguien sabe cual podría ser el e problema?, ya tengo instalados todos los net framework pero aun así no sé que mas podría ser, estoy tratando de meter un exe en el código de c# para que al dar clic en el compilado este se extraiga automáticamente en un directorio que yo le especifique.

Dev. Joel
  • 23,229
  • 3
  • 25
  • 44
Gearcapitan
  • 1
  • 1
  • 1
  • Tal vez [esta pregunta](https://es.stackoverflow.com/questions/75999/qu%c3%a9-es-una-nullreferenceexception-y-c%c3%b3mo-solucionarla) te de alguna pista. – PaperBirdMaster Jun 13 '17 at 07:04
  • valida que esto se genera correctamente `nameSpace + "." + (internalFilePath == "" ? "" : internalFilePath + ".") + resourceName` – jasilva Jun 13 '17 at 13:32
  • el problema esta en la linea 22, que dice que s es nulo lo anterior esta validado ya – Gearcapitan Jun 13 '17 at 14:01

1 Answers1

0

Esta línea:

Stream s = assembly.GetManifestResourceStream(nameSpace + "." + (internalFilePath == "" ? "" : internalFilePath + ".") + resourceName)

Se evalúa en

Stream s = assembly.GetManifestResourceStream("ExtractResource.NewFolder1.OfficeClickRun.exe")

Lo cual devuelve null porque no puede encontrar el recurso dentro del assembly.

Me parece que el error está en la línea:

Extract("ExtractResource", ...);

Que debería ser

Extract("ExtractSource", ...);
Carlos Muñoz
  • 12,864
  • 2
  • 42
  • 62