微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使.NET引用配置依赖

我的应用程序有几个配置可以进行调试/发布构建,还有32位和64位构建.现在使用32位和64位构建,我需要引用不同的dll(即使用x86构建的那些和使用x64构建的那些),但引用似乎对我的项目是全局的,并且不依赖于配置.现在,当我从32位切换到64位构建时,我总是必须交换引用(反之亦然).为不同配置实现不同引用的适当方法是什么?

解决方法

这可以通过对项目文件的一些手动操作来完成.

首先,您需要右键单击该项目,然后单击“卸载项目”.然后再次右键单击它并选择编辑[项目名称].

当它在编辑器中加载时,您将看到您的refences的各种条目:

<ItemGroup>
    <Reference Include="System.Xml" />
    <Reference Include="WindowsBase">
        <requiredTargetFramework>3.0</requiredTargetFramework>
    </Reference>
    <Reference Include="PresentationCore">
        <requiredTargetFramework>3.0</requiredTargetFramework>
    </Reference>
    <Reference Include="PresentationFramework">
        <requiredTargetFramework>3.0</requiredTargetFramework>
    </Reference>
    <Reference Include="Microsoft.Practices.ServiceLocation,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35,processorArchitecture=MSIL">
        <SpecificVersion>False</SpecificVersion>
        <HintPath>..\Common\Lib\3rdParty\Prism\4.0\Desktop\Microsoft.Practices.ServiceLocation.dll</HintPath>
    </Reference>
</ItemGroup>

请注意,这些都在ItemGroup节点内.
您现在可以执行一些魔术…将一个表达式添加到您的ItemGroup中,以便仅在构建配置具有某种位数时使用它:

<ItemGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
    <!-- these are the references used when there is a Release x86 build -->
    <Reference Include="System.Xml" />
</ItemGroup>

请注意,无法通过UI执行此操作,因此您必须手动管理这些参考列表(例如,如果您需要添加其他参考).

还要注意,这不是一个黑客…它只是使用features of MSBuild之一(VS用来构建你的项目).你可以使用你喜欢的任何表达式来拥有尽可能多的这些ItemGroup列表 – 如果它没有表达式,那么它将始终包含在构建中.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐