gpt4 book ai didi

c# - .csproj 程序集的多个提示路径

转载 作者:IT王子 更新时间:2023-10-29 03:44:52 29 4
gpt4 key购买 nike

我正在为 SDK 分发打包示例代码。在分发中,从代码到 SDK 程序集的相对路径与构建机器不同。例如:

分布

csharp/bin/assembly.dll
example/ex1/ex1.csproj

构建机器

foo/sdk/csharp/bin/assembly.dll
bar/baz/quux/ex1/ex1.csproj

假设我不能移动任何东西。有什么方法可以指导 ex1.csproj两者兼顾

../../csharp/bin/ ../../../../foo/sdk/csharp/bin/对于 assembly.dll

在 C++ 中,我会将依赖路径放在独立的属性表中,并使用 SDK 分发不同的版本。但是 C# 没有属性表,我不想维护整个项目的两个版本。

我看过 this question这表明我不能使用多个 <HintPath>标签,所以我正在寻找另一种方法来近似相同的行为。

最佳答案

由于只能使用一个 HintPath,因此最简单的方法是像这样使用非常好的 Condition 属性:

<Reference Include="TheAssembly">
<HintPath Condition="Exists('..\My\Assembly\Path')">..\My\Assembly\Path\TheAssembly.dll</HintPath>
<HintPath Condition="Exists('..\..\My\Assembly\Path')">..\..\My\Assembly\Path\TheAssembly.dll</HintPath>
<HintPath Condition="Exists('..\..\..\My\Assembly\Path')">..\..\..\My\Assembly\Path\TheAssembly.dll</HintPath>
<HintPath Condition="Exists('..\..\..\..\My\Assembly\Path')">..\..\..\..\My\Assembly\Path\TheAssembly.dll</HintPath>
<HintPath Condition="Exists('..\..\..\..\..\My\Assembly\Path')">..\..\..\..\..\My\Assembly\Path\TheAssembly.dll</HintPath>
<HintPath Condition="Exists('..\..\..\..\..\..\My\Assembly\Path')">..\..\..\..\..\..\My\Assembly\Path\TheAssembly.dll</HintPath>
<HintPath Condition="Exists('..\..\..\..\..\..\..\My\Assembly\Path')">..\..\..\..\..\..\..\My\Assembly\Path\TheAssembly.dll</HintPath>
etc...
</Reference>

所以这个问题的答案是这样的:

<Reference Include="assembly">
<HintPath Condition="Exists('..\..\csharp\bin')">..\..\csharp\bin\assembly.dll</HintPath>
<HintPath Condition="Exists('..\..\..\..\foo\sdk\csharp\bin')">..\..\..\..\foo\sdk\csharp\bin\assembly.dll</HintPath>
</Reference>

如果多个条件匹配,将使用最后一个。

关于c# - .csproj 程序集的多个提示路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15666618/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com