Ho scritto un piccolo script MSBuild per creare il mio progetto su più versioni. Quando lo eseguo da VS2012 Prompt dei comandi funziona, non ricevo errori o eccezioni. Tuttavia, quando paragono gli assembly prodotti, sono identici. C'è qualcosa di sbagliato nel mio script?Il mio script di build per il targeting di più framework di destinazione funziona correttamente?
<Target Name="Build">
<MSBuild Projects=".\WcfClientBase\WcfClientBase.csproj"
Properties="Configuration=Release;OutputPath=.\BuildArtifacts\net45;TargetFrameworkVersion=v4.5" />
<MSBuild Projects=".\WcfClientBase\WcfClientBase.csproj"
Properties="Configuration=Release;OutputPath=.\BuildArtifacts\net40;TargetFrameworkVersion=v4.0" />
<MSBuild Projects=".\WcfClientBase\WcfClientBase.csproj"
Properties="Configuration=Release;OutputPath=.\BuildArtifacts\net35;TargetFrameworkVersion=v3.5" />
</Target>
Ho installato VS2012 Professional. Ho anche notato che .NET 4.5 non ha il suo MSBuild.exe. Sta usando quello della versione 4.0?
Aggiornamento
ho costruito con Visual Studio per ogni versione e tutti i gruppi sono diversi. C'è qualcosa di sbagliato nel mio script. Ho digitato in modo intenzionale il nome del parametro TargetFrameworkVersion, ma ha comunque creato e prodotto gli stessi output. Forse non è in grado di sovrascrivere quel parametro dal file di progetto o ci sono altri parametri che mi mancano. Altre idee?
Ho appena utilizzato ILMerge per modificare un eseguibile .NET 2 in .NET 4; p Ricordare che il punto di ingresso determina la versione runtime. Nel mio caso, tutti gli assembly sono costruiti con il targeting su .NET 2 e utilizzando AnyCPU. Quindi utilizzo ILMerge e corflags per generare un set di 4 file eseguibili per le versioni .NET e bitness. Funziona un fascino (nel mio caso specifico per l'utilizzo di ngen su tutte e 4 le configurazioni). – leppie
Come stai facendo il tuo confronto? Stai confrontando byte per byte? –
@splatteredbits yes –