Reference 在VisualStudio中使用不同的引用编译相同的项目

Reference 在VisualStudio中使用不同的引用编译相同的项目,reference,project,Reference,Project,我正在使用Visual Studio 2012并为应用程序开发插件。 此应用程序具有不同的API(我需要引用的DLL),具体取决于其版本。 我的插件代码适用于应用程序的2012和2013版本,但我必须使用相应版本的API 因此,我可以在VisualStudio中编译具有不同引用的相同项目(并将其输出到两个不同的文件夹),还是创建重复项目并更改引用的唯一方法 希望我已经说清楚了, 谢谢是的,你可以。 您可以在项目定义(或msbuild)中使用条件编译符号,然后在.csproj(或类似)文件中再次使

我正在使用Visual Studio 2012并为应用程序开发插件。 此应用程序具有不同的API(我需要引用的DLL),具体取决于其版本。 我的插件代码适用于应用程序的2012和2013版本,但我必须使用相应版本的API

因此,我可以在VisualStudio中编译具有不同引用的相同项目(并将其输出到两个不同的文件夹),还是创建重复项目并更改引用的唯一方法

希望我已经说清楚了, 谢谢

是的,你可以。 您可以在项目定义(或msbuild)中使用条件编译符号,然后在.csproj(或类似)文件中再次使用条件编译符号,以手动编辑该文件并添加相应的信息

您还可以根据符号的API更改进行区分

这是根据生产代码修改的,因此可能存在语法错误,它应该类似于:

</ItemGroup>
<Choose>
  <When Condition="$(DefineConstants.Contains('__NEW_DLL_HANDLING_1__')) And !$(DefineConstants.Contains('__NEW_DLL_HANDLING_2__'))">
    <ItemGroup>
      <Reference Include="mydll, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
        <SpecificVersion>False</SpecificVersion>
        <HintPath>..\Additional\mydll1\mydll.dll</HintPath>
      </Reference>
    </ItemGroup>
  </When>
  <When Condition="$(DefineConstants.Contains('__NEW_DLL_HANDLING_1__'))">
    <ItemGroup>
      <Reference Include="mydll, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
        <SpecificVersion>False</SpecificVersion>
        <HintPath>..\\Additional\mydll2\mydll.dll</HintPath>
      </Reference>
    </ItemGroup>
  </When>
  <Otherwise>

假的
..\Additional\mydll1\mydll.dll
假的
..\\Additional\mydll2\mydll.dll