He creado una plantilla de proyecto que contiene un csproj que contiene una importación que apunta a un archivo de proyecto donde enumero todas las ubicaciones de proyectos de terceros. Siempre uso esta plantilla de proyecto para crear proyectos en el mismo directorio relativo.¿Cómo uso una importación relativa en una plantilla csproj?
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="../../../3rdParty/ThirdParty.targets" />
...
<ItemGroup>
<Reference Include="Library, Version=$(LibraryVersion), Culture=neutral, PublicKeyToken=$(LibraryPublicKeyToken), processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(LibraryDir)LibraryDll.dll</HintPath>
</Reference>
</ItemGroup>
...
</Project>
El archivo csproj funciona correctamente en Visual Studio y al ejecutar msbuild desde el símbolo del sistema. Cuando intento crear un proyecto utilizando la plantilla de proyecto me sale el siguiente error:
C:\Users...\AppData\Local\Temp\534cylld.o0p\Temp\MyModule.csproj(3,3): The imported project "C:\Users...\AppData\Local\3rdParty\ThirdParty.targets" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.
Parece que Visual Studio está tratando de abrir el proyecto en una ubicación temporal en primer lugar. He intentado agregar $ (MSBuildProjectDirectory) a la ubicación de importación esperando que pueda obligarlo a usar la ubicación que pretendía, pero tampoco funcionó.
¿Alguna sugerencia?
Estoy teniendo exactamente el mismo problema, excepto que mi archivo importado se usa para ejecutar una tarea de compilación personalizada. Necesito que esta ruta sea relativa porque es relativa a la jerarquía de mi carpeta de control de origen. – madd0
@Christo: ¿Podría proporcionar el pah completo a un directorio desde el que está ejecutando compilación desde la línea de comandos? – sll