MICROSOFT VISUAL STUDIO
MICROSOFT VISUAL STUDIO: MSBuild

Vediamo alcuni piccoli consigli sul linguaggio di script della Microsoft: MSBuild: come fare a sapere se una libreria (DLL) è a 32 bit o a 64 bit?

 

 

 

Cos'è MSBuild? Usiamo le parole della Microsoft:

" Microsoft Build Engine è una piattaforma per la compilazione di applicazioni.  Questo motore, anche noto come MSBuild, fornisce uno schema XML per un file di progetto che controlla il modo in cui la piattaforma di compilazione elabora e compila il software.  Visual Studio utilizza MSBuild, ma esso non dipende da Visual Studio. Richiamando msbuild.exe nel progetto o nel file della soluzione, è possibile orchestrare e compilare prodotti in ambienti in cui Visual Studio non è installato. " [citazione]

Così si configura il tipo di compilazione della Build:

 

<ItemGroup>
    <ConfigurationToBuild Include="Release|Any CPU">
      <FlavorToBuild>Release</FlavorToBuild>
      <PlatformToBuild>Any CPU</PlatformToBuild>
    </ConfigurationToBuild>
  </ItemGroup>

 

In questo esempio la Build compila in modalità "Release" e per "Any CPU".

 

Caricare una libreria esterna da usare all'interno dello script:

 

<UsingTask TaskName="MyClass.MyMethod" AssemblyFile="$(BuildDirectory)\Sources\....file path\MyClass.dll" />

...

<MyMethod ....insert here the params .... />

Impostare delle variabili per configurare le cartelle che verranno usate nello script:

 

<PropertyGroup>   
    <!-- Cartelle temporanee della Build -->
    <MioFolder>$(BuildDirectory)\MioFolder</MioFolder>
      
    <!--Cartelle cretate nel DropFolder -->
    <DropConnectors>package\MioDropFolder</DropConnectors>
   
    <!-- Cartelle che puntano a Tools usati per la creazione del pacchetto. Fanno riferimento alla macchina dove gira lo script -->
    <AntBaseDir>C:\apache-ant-1.8.1</AntBaseDir>
</PropertyGroup>

 

Di solito nel task AfterCompile si mettono tutti gli step che servono per la creazione vera e propria del pacchetto.

 

<Target Name="AfterCompile">

    <!-- Creare una cartella -->    
    <MakeDir Condition="!Exists('$(MioFolder)')" Directories="$(MioFolder)" />
 
    <!-- Eseguire un comando come da DOS PROMPT -->
    <!-- SI RIMUOVE L'ATTRIBUTO READONLY in maniera ricorsiva -->
    <Exec Command="attrib -r $(SolutionRoot)\Source\MioFolder\*.* /s"/>

 

   <!-- Comando Copy -->

   <Copy SourceFiles="$(SolutionRoot)\FromFolder\*.*" DestinationFolder="$(ToFolder)" />

 

   <!-- Esecuzione di Maven -->  

   <Exec Command="$(MavenBaseDir)\bin\mvn package -o -Dmaven.test.skip=true -f &quot;$(SolutionRoot)\Source\MioFolder\pom.xml&quot;" />
 

   <!-- Comando xCopy -->
    <Exec Command="xcopy &quot;FromFolder&quot; &quot;ToFolder&quot; /e /y /i" />

   <!-- Copy and Rename -->
    <Copy SourceFiles="FromFolder\MioFile.txt" DestinationFiles="ToFolder\MioNomeNuovoFile.txt" />
     
    <!-- Call di un target -->
    <CallTarget Condition="'$(MioParametro)'=='True'" Targets="MioTarget" />

  </Target>

Vediamo anche l'istruzione di delete:

<Exec Command="del &quot;MioFolder\MioFile&quot; /Q" />  

Il parametro /Q serve ad abilitare la "Modalità non interattiva".

 

LIBRERIA A 32BIT O A 64BIT

Come fare a sapere se una libreria è a 32 bit (x86) oppure a 64 bit (AMD64)?

Detto fatto:

 

dumpbin /headers <myPathToDLL> | findstr machine

 

Questo eseguibile lo trovate nelle cartelle di installazione di Visual Studio. Ad es:

C:\Programmi (x86)\Microsoft Visual Studio 12.0\VC\bin

 

 

Buon lavoro!

Il nostro sito utilizza i cookie

Usando il sito accetti implicitamente il loro uso. Per saperne di piu'

Approvo