具有不同名称的参考组件,具体取决于配置

时间:2017-10-10 15:55:58

标签: c# csproj

我正在构建一个类库,而不是可以与不同版本的产品进行交互。

该产品的每个版本都附带一个SDK dll,其中包含不同的程序集名称:MyProduct.V1.DLLMyProduct.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工作正常)

有可能吗?我怎样才能使它有效?

0 个答案:

没有答案