Schiøtt's Blog

desember 13, 2008

Visual Studio 2008 -Xml som embedded resource

Arkivert under: C#, Visual Studio, XML — jeroenschiott @ 01:24

Noen ganger måttet sende en Xml i et spesielt format til noen andre?
Det er sikkert en rekke metoder å gjøre dette på, men to av dem er iallefall:

  • Definer xmlen som en string, manipuler det du skal og send det tilbake. 
    Dette er kjedelig om du har en lang xml.
  • Lagre xmlen som en fil, les filen, manipuler og send tilbake.
    Ikke helt ønskelig dette heller.

Så, da er en tredje mulig løsning:
Vi legger filen inn som en embedded resource.
Dvs legg filen inn i prosjektet ditt, gå på properties og  velg Build Action Embedded Resource.
Du kan bruker den embeddede resourcen som følger:


     try
    {

        //C# demand prefiks with project name

        //Hardkodet prosjektnavnet.
       //Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream("XmlAsEmbeddedResource.BrregSoapMsgInbound.xml");

        //Kodet prosjektnavnet
        Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream(Assembly.GetExecutingAssembly().GetName().Name + ".NameOfXmlFile.xml");
        XmlDocument XmlDoc = new XmlDocument();
        StreamReader reader = new StreamReader(s);
        XmlDoc.LoadXml(reader.ReadToEnd());
        reader.Close();
       //Manipuler xmlen.. om du vil..

      //Skriver den ut til en textbox.
     //Det kan være at det er noe problemer knyttet til særnorske tegn, tegnsett eller liknende.
    //Har ikke opplevd det selv, men det bør nok sjekkes.
        this.textBox1.Text = XmlDoc.OuterXml;
        }
      catch (Exception ex)
        {
        MessageBox.Show(ex.Message);
        }

desember 6, 2008

Visual Studio 2008 -External Tools Xsd.exe

Arkivert under: Visual Studio, XML — Merkelapper: — jeroenschiott @ 23:25

Hvordan legge til Xsd.exe i External Tools

Xsd.exe er et program som følger med Visual Studio og som kan benyttes til å lage klasser basert på Xsd filer.

Xsd.exe kan kalles fra command line, men det er langt enklere å legge den til som External Tool i Visual Studio.

(les mer …)

desember 4, 2008

Visual Studio 2008 -Caspol

Arkivert under: Visual Studio — Merkelapper: — jeroenschiott @ 00:07

Caspol

 

Caspol:
http://www.codeproject.com/KB/dotnet/CAS_Part_-_2.aspx

Hvordan lage en exe signert med et strongname:
http://quickstart.developerfusion.co.uk/QuickStart/howto/doc/sharedname.aspx

I svært korte trekk:
*Visual Studio Command Line: sn -k Testkey.snk
*Fra prosjektet sine properties kan du så peke på filen Testkey.snk. 

Under er filen windowsformsapplication1.exe signert med et strong name.

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -user -quiet -addgroup All_Code -strong -file C:\Temp\WindowsFormsApplication1.exe -noname -noversion FullTrust -name “XXX_Strong_Name” -description “Kodegruppen gir fullstendig klarering til koder signert med XXX-sterke navn.”

-user endringen gjelder på bruker nivå

-quiet sørger for at prompten ikke vises. Gjelder kun for en kommando 
Det finnes en annen kommando som sørger for at prompt ikke vises for alle etterfølgende kommandoer. 

-addgroup Legg til gruppe under All_Code

-strong har noe med hvordan man skal kunne bli medlem av gruppen.
I dette tilfellet er det de filene som er signert med strongname lik det som windowsformsapplication1.exe vil bli medlem av gruppen.

-name Her angir vi navnet på gruppen som er lagt til

-description angir en beskrivelse av gruppen. 

 

-Omtrent denne kommandoen kan vi også bruke for å stole på alt i en mappe feks.

–Fjerner gruppen først, 2 grupper med samme navn kan medføre problemer. Gjorde iallefall det da jeg testet.

–Problemet oppstod først da jeg startet applikasjonen
–Øverst i den store meldingen som kommer opp så står det at labelen ikke finnes om den ikke gjør det.
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -machine -remgroup “Test1″

–Denne funker. Legg merke til exclusive on.
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -machine -addgroup All_Code -url file://I:\test\TEMP\* FullTrust -name “Test1″ -description “Test1Description” -exclusive on

Det virker som om man må benytte machine når man legger til rettigheter på denne måten.
På siden http://blogs.msdn.com/shawnfa/archive/2004/12/30/344554.aspx er dette forklart med:

“-m  - modify the machine level of the policy.  This is needed, since the machine level is where all of the default policy lives.  
On NT platforms it’s also the default level that CasPol works with, however on Win9x, CasPol will default to the user level, 
so putting -m in the command line explicitly tells CasPol to use the correct level. “

–Denne skal vise hvilke gruppe tilhørighet man har, men det er ikke spesielt lett å lese outputen.
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -a -resolvegroup C:\Temp\WindowsFormsApplication1.exe

–Denne skal vise hvilke tillatelser man har
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -a -resolveperm C:\Temp\WindowsFormsApplication1.exe

 

Når jeg lager en exefil og legger den på nettverket så har jeg fulltrust til den.

Det virker som om det er fordi koden er kompilert på min maskin.

Dersom jeg starter den fra en annnen maskin har jeg reduserte rettigheter.

Blogg på WordPress.com.