我正在构建一个类库,而不是可以与不同版本的产品进行交互。
该产品的每个版本都附带一个SDK dll,其中包含不同的程序集名称:MyProduct.V1.DLL
,MyProduct.V2.Dll
等等。
在我的类库项目中,我尝试使用配置来一次引用一个这些程序集。我基本上通过创建这些配置来模仿产品版本控制方案:
DebugV1|Any CPU
将V1版本与调试编译相匹配ReleaseV1|Any CPU
将V1版本与发布编译相匹配DebugV2|Any CPU
将V2版本与调试编译相匹配ReleaseV2|Any CPU
将V2版本与发布编译相匹配我还调整了csproj文件以动态生成程序集名称:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugV1|AnyCPU' ">
<MyProductVersion>V1</MyProductVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseV1|AnyCPU' ">
<MyProductVersion>V1</MyProductVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugV2|AnyCPU' ">
<MyProductVersion>V2</MyProductVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseV2|AnyCPU' ">
<MyProductVersion>V2</MyProductVersion>
</PropertyGroup>
<ItemGroup>
<Reference Include="MyProduct.$(MyProductVersion)">
<HintPath>c:\Path\to\sdk\MyProduct.$(MyProductVersion).dll</HintPath>
</Reference>
</ItemGroup>
我还尝试了完整参考节点的条件:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugV1|AnyCPU' ">
<ItemGroup>
<Reference Include="MyProduct.V1">
<HintPath>c:\Path\to\sdk\MyProduct.V1.dll</HintPath>
</Reference>
这些尝试都没有奏效。解决方案资源管理器始终在引用节点中显示V1名称。引用有一个小警告图标告诉我找不到引用(这可能是因为HintPath工作正常)
有可能吗?我怎样才能使它有效?