Tuve el mismo problema pero no quería modificar las cosas fuera del árbol de fuentes para que esto funcione. Agregar archivos a C: \ Archivos de programa ... significa que debe hacerlo manualmente en cada máquina de desarrollo para obtener el mismo comportamiento.
lo hice tres cosas:
1) crea un archivo objetivos personalizados que he importación en todas y cada una o # proyecto/VB/F C# en mi solución añadiendo el siguiente para cada archivo proj:
<!-- Rest of project file -->
<PropertyGroup Condition="'$(SolutionDir)' == '' or '$(SolutionDir)' == '*undefined*'">
<!-- Relative path to containing solution folder -->
<SolutionDir>..\</SolutionDir>
</PropertyGroup>
<Import Project="$(SolutionDir)CommonSettings.targets" />
2) Añadido un blanco limpio, que es llamada después de que el verdadero limpio (usando los AfterTargets atributo de MSBuild 4.0):
<Target Name="CleanCs" AfterTargets="Clean">
<Message Text="Deep cleaning C# project..." />
<CreateItem Include="$(OutDir)**\*.*; $(ProjectDir)\obj\**\*.*; $(IntermediateOutputPath)**\*.*"
Exclude="**\bin\**\*.vshost.exe; $(IntermediateOutputPath)**\*.log">
<Output TaskParameter="Include" ItemName="AfterClean_FilesToDelete"/>
</CreateItem>
<Delete Files="@(AfterClean_FilesToDelete)" />
<CreateItem Include="$(ProjectDir)\obj\" >
<Output TaskParameter="Include" ItemName="AfterClean_DirectoriesToDelete" />
</CreateItem>
<CreateItem Include ="$(ProjectDir)\bin\" Condition="'$(TargetExt)' != '.exe'" >
<Output TaskParameter="Include" ItemName="AfterClean_DirectoriesToDelete"/>
</CreateItem>
<RemoveDir ContinueOnError="true" Directories="@(AfterClean_DirectoriesToDelete)" />
</Target>
3) En mi proyecto de MSBuild integración continua I compruebe y asegúrese de que todos los archivos de proj tengan # 1:
<ItemGroup>
<!-- Exclude viewer acceptance tests as they must compile as x86 -->
<CheckProjects_CsProjects Include="**\*.csproj" />
</ItemGroup>
<Target Name="CheckProjects">
<!--
Look for C# projects that don't import CommonSettingsCs.targets
-->
<XmlRead XPath="//n:Project[count(n:Import[@Project[contains(string(), 'CommonSettingsCs.targets')]]) = 0]/n:PropertyGroup/n:AssemblyName/text() "
XmlFileName="%(CheckProjects_CsProjects.Identity)"
Namespace="http://schemas.microsoft.com/developer/msbuild/2003"
Prefix="n" >
<Output TaskParameter="Value" ItemName="CheckProjects_CsMissingImports"/>
</XmlRead>
<Error Text="Project missing CommonSettingsCs.targets: %(CheckProjects_CsMissingImports.Identity)"
Condition="'%(CheckProjects_CsMissingImports.Identity)' != ''" />
</Target>
Esto evita que los desarrolladores se olviden de agregar # 1. Puede crear su propia plantilla de proyecto para asegurarse de que todos los proyectos nuevos tengan esto de forma predeterminada.
La ventaja de este enfoque es la configuración de un nuevo alistamiento de árbol de origen que no implica nada más que obtener el árbol de origen actual. La desventaja es que tiene que editar los archivos del proyecto una vez cuando los crea.
Ok, lo tengo. Ingresé a este archivo de proyecto temporal e incluye Compilar, Limpiar, Reconstruir y Publicar. No importa desde common.targets.files. Lástima, tendré que encontrar otra solución. –
Esto no se aplica a ninguna compilación de Visual Studio, ¿verdad? – Maslow