我已經創建了一個項目模板,其中包含一個csproj,其中包含一個指向項目文件的導入,其中列出了所有第三方項目位置。我總是使用這個項目模板在相同的相對目錄中創建項目。如何在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>
csproj文件在Visual Studio中正常工作,並從命令提示符運行msbuild時。當我嘗試創建一個使用項目模板,我得到以下錯誤的一個項目:
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.
看來,Visual Studio是試圖先打開一個臨時位置的項目。 我已經嘗試將$(MSBuildProjectDirectory)添加到導入位置,希望它可能會強制它使用我打算的位置,但那也不起作用。
有什麼建議嗎?
我有完全相同的問題,除了我的導入文件用於執行自定義生成任務。我需要這個路徑是相對的,因爲它是相對於我的源代碼管理文件夾層次結構。 – madd0 2011-08-12 08:14:17
@Christo:你可以提供完整的pah到你從命令行運行構建的目錄嗎? – sll 2011-08-15 23:03:17