Ho un progetto nella mia soluzione che è iniziato come progetto di libreria C#. Non ha nulla di interessante in termini di codice, è semplicemente usato come dipendenza dagli altri progetti nella mia soluzione per garantire che sia stato costruito per primo. Uno degli effetti collaterali della creazione di questo progetto è che viene creato un AssemblyInfo.cs condiviso che contiene il numero di versione utilizzato dagli altri progetti.Come impedire che i file MSBuild esterni vengano memorizzati nella cache (da Visual Studio) durante la creazione di un progetto?
ho fatto questo aggiungendo quanto segue al file Csproj:
<ItemGroup>
<None Include="Properties\AssemblyInfo.Shared.cs.in" />
<Compile Include="Properties\AssemblyInfo.Shared.cs" />
<None Include="VersionInfo.targets" />
</ItemGroup>
<Import Project="$(ProjectDir)VersionInfo.targets" />
<Target Name="BeforeBuild" DependsOnTargets="UpdateSharedAssemblyInfo" />
Il file indicato, VersionInfo.targets, contiene quanto segue:
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!--
Some properties defining tool locations and the name of the
AssemblyInfo.Shared.cs.in file etc.
-->
</PropertyGroup>
<Target Name="UpdateSharedAssemblyInfo">
<!--
Uses the Exec task to run one of the tools to generate
AssemblyInfo.Shared.cs based on the location of AssemblyInfo.Shared.cs.in
and some of the other properties.
-->
</Target>
</Project>
Il contenuto del VersionInfo. il file target potrebbe semplicemente essere incorporato nel file .csproj ma è esterno perché sto cercando di trasformare tutto questo in un modello di progetto. Voglio che gli utenti del modello siano in grado di aggiungere il nuovo progetto alla soluzione, modificare il file VersionInfo.targets ed eseguire la build.
Il problema è che la modifica e il salvataggio del file VersionInfo.targets e la ricostruzione della soluzione non hanno alcun effetto: il file di progetto utilizza i valori del file .targets così come erano quando il progetto è stato aperto. Anche lo scarico e il ricaricamento del progetto non hanno alcun effetto. Per ottenere i nuovi valori, ho bisogno di chiudere Visual Studio e riaprirlo (o ricaricare la soluzione).
Come posso configurarlo in modo che la configurazione sia esterna al file .csproj e non memorizzata nella cache tra le build?
possibile duplicato di [Come disattivare la memorizzazione nella cache delle definizioni di build in Visual Studio] (http://stackoverflow.com/questions/4919204/how-to-turn-off-caching-of-build-definitions-in- visual-studio) – yoyo
un altro possibile duplicato: http://stackoverflow.com/questions/2012742/how-to-stop-visual-studio-caching-imported-msbuild-scripts –