No sé cómo podría deshabilitar el caché de VS, sin embargo, es posible que tenga una solución que le permita editar el objetivo de compilación sin tener que volver a cargar la solución.
Puede usar la tarea MSBuild en su archivo de proyecto para llamar a un destino de contenedor que copia su archivo CopyDependencies.target a CopyDependencies. [RandomNumber] .target, luego invoca su destino CopyDependencies en el archivo recién creado y finalmente lo elimina .
Esto obligaría a VS a volver a cargar el destino en cada invocación ya que el nombre de archivo es diferente.
He aquí un ejemplo:
myProject.proj
añadir esto a la meta AfterBuild:
<MSBuild Projects="Wrapper.target" Targets="MyWrappedTarget" UnloadProjectsOnCompletion="true"/>
Wrapper.target
Aquí tenemos el objetivo que quiere - en construcción time: copie el archivo de destino real e invoque el destino de construcción deseado dentro de él (he utilizado una tarea C# en línea que solo está disponible en MSBuild 4.0):
<UsingTask TaskName="RandomNumber" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<Number ParameterType="System.Int32" Output="true"/>
</ParameterGroup>
<Task>
<Code Type="Fragment" Language="cs">
<!-- CDATA -->
Random rndGenerator = new Random();
Number = rndGenerator.Next(Int32.MaxValue);
<!-- CDATA -->
</Code>
</Task>
</UsingTask>
<Target Name="MyWrappedTarget">
<Message Text="MyWrappedTarget target called"/>
<RandomNumber>
<Output TaskParameter="Number" PropertyName="FileNumber"/>
</RandomNumber>
<PropertyGroup>
<CopiedTarget>inner.test.$(FileNumber).target</CopiedTarget>
</PropertyGroup>
<Copy SourceFiles="inner.test.target" DestinationFiles="$(CopiedTarget)"/>
<MSBuild Projects="$(CopiedTarget)" Targets="_innerTestTarget"/>
<Delete Files="$(CopiedTarget)"/>
</Target>
inner.test.target
Este contiene el destino de generación de bienes que desea ejecutar, en este ejemplo es una copia simple de archivos.
<Target Name="_innerTestTarget">
<Message Text="This is a inner test text message"/>
<Copy SourceFiles="x.txt" DestinationFiles="x1.txt"/>
</Target>
Esto no está listo para producción, pero con suerte ilustra mi punto.
Con este proceso (un poco intrincado), puede cambiar el archivo inner.test.target sin tener que volver a cargar la solución en VS.
¡Gran solución! Trabajó para [me] (http://stackoverflow.com/q/9227641/684399) – CitizenInsane
Parece una solución razonable. Para su información de MSBuild 4 puede usar PropertyGroup dentro del objetivo en lugar de CreateProperty. –
Gracias por la sugerencia, lo cambié ... se ve mucho mejor – Martin