Msbuild Azure DevOps管道构建代理:如何在程序集引用HintPath中使用或替换$(DevEnvDir)?

Msbuild Azure DevOps管道构建代理:如何在程序集引用HintPath中使用或替换$(DevEnvDir)?,msbuild,azure-devops,azure-pipelines,Msbuild,Azure Devops,Azure Pipelines,我在本地有Visual Studio 2019 Professional,Azure DevOps管道构建代理有Enterprise 如何引用项目文件中的ReferenceAssembly,该文件在本地和生成代理中都进行解析 Projectfile:在本地生成,,但管道生成因路径错误而失败: <HintPath>$(ProgramFiles)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ReferenceAssembli

我在本地有Visual Studio 2019 Professional,Azure DevOps管道构建代理有Enterprise

如何引用项目文件中的ReferenceAssembly,该文件在本地和生成代理中都进行解析

Projectfile:在本地生成,但管道生成因路径错误而失败:

<HintPath>$(ProgramFiles)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v9.0\Mono.Android.dll</HintPath>
<HintPath>$(ProgramFiles)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v9.0\Mono.Android.dll</HintPath>
$(程序文件)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ReferenceAssembly\Microsoft\Framework\MonoAndroid\v9.0\Mono.Android.dll
Projectfile:在azure devops管道中生成,但由于路径错误,本地生成失败:

<HintPath>$(ProgramFiles)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v9.0\Mono.Android.dll</HintPath>
<HintPath>$(ProgramFiles)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v9.0\Mono.Android.dll</HintPath>
$(程序文件)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\ReferenceAssembly\Microsoft\Framework\MonoAndroid\v9.0\Mono.Android.dll
Projectfile:builds本地生成,但管道生成失败,因为$DevEnvDir未定义:

$(DevEnvDir)\ReferenceAssemblies\Microsoft\Framework\monoadroid\v9.0\Mono.Android.dll

我觉得这里缺少了一些简单的东西…

您可以使用
条件

<Reference Include="Mono.Android.dll">
    <HintPath Condition="Exists('$(ProgramFiles)\Microsoft Visual Studio\2019\Professional')">$(ProgramFiles)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v9.0\Mono.Android.dll</HintPath>
    <HintPath Condition="Exists('$(ProgramFiles)\Microsoft Visual Studio\2019\Enterprise')">$(ProgramFiles)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v9.0\Mono.Android.dll</HintPath>
</Reference>

$(程序文件)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ReferenceAssembly\Microsoft\Framework\MonoAndroid\v9.0\Mono.Android.dll
$(程序文件)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\ReferenceAssembly\Microsoft\Framework\MonoAndroid\v9.0\Mono.Android.dll

您必须创建一个名为
DevEnvDir的管道变量


我用我的visual studio 2019 enterprise进行了测试,
$(程序文件)\..\Mono.Android.dll
$(DevEnvDir)
对我都有效

您可以转到hintpath中指定的文件夹,以确保mono.android.dll确实存在。您也可以尝试手动定位mono.android.dll


谢谢,但问题不是缺少文件,而是devops build agent和本地生成环境之间的差异。谢谢!虽然HintPath条件适用于我的情况,但管道变量是更一般的解决方案。