2015-05-29 33 views
0

我在项目中有一个条件引用(基于x86与x64的构建配置),当我为一个对象生成单元测试时(通过右键单击类名并选择“创建单元测试...”)Visual Studio(2012)坚持要为x86版本的dll单元测试项目添加一个引用。唯一的问题是这个引用已经存在于我的主项目中的条件形式中。如何让Visual Studio不向我的单元测试项目添加引用?

大部分时间我都没有意识到这种情况发生,直到我将它合并到我们的UAT环境以构建不同的配置。此时它因为UAT环境需要x64 dll而中断。

有什么办法可以解决这个 错误 功能?

如果这有什么差别,这里是有条件的参考:

<Reference Include="ceTe.DynamicPDF.Printing" Condition="'$(Configuration)' == 'Debug' OR '$(Configuration)' == 'Release'"> 
    <HintPath>..\References\ceTe.DynamicPDF.Printing.40.x86.dll</HintPath> 
</Reference> 
<Reference Include="ceTe.DynamicPDF.Printing" Condition="'$(Configuration)' == 'Dev' OR '$(Configuration)' == 'Test' OR '$(Configuration)' == 'Production'"> 
    <HintPath>..\References\ceTe.DynamicPDF.Printing.40.x64.dll</HintPath> 
</Reference> 

这是Visual Studio是试图添加,大概是因为它无法调和的,将条件引用等效参考:

<Reference Include="ceTe.DynamicPDF.Printing.40.x86, Version=1.0.1.15925, Culture=neutral, PublicKeyToken=09b5ce0d5c0a9d8b, processorArchitecture=x86"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\References\ceTe.DynamicPDF.Printing.40.x86.dll</HintPath> 
</Reference> 

在此先感谢您的帮助。

回答

0

我能想出的解决办法是增加如参考:

<Reference Include="ceTe.DynamicPDF.Printing.40.x86" Condition="'$(Configuration)' == 'Debug' OR '$(Configuration)' == 'Release'"> 
    <HintPath>..\References\ceTe.DynamicPDF.Printing.40.x86.dll</HintPath> 
</Reference> 
<Reference Include="ceTe.DynamicPDF.Printing.40.x64" Condition="'$(Configuration)' == 'Dev' OR '$(Configuration)' == 'Test' OR '$(Configuration)' == 'Production'"> 
    <HintPath>..\References\ceTe.DynamicPDF.Printing.40.x64.dll</HintPath> 
</Reference> 

我不是100%肯定,但我相信这工作(或者更准确地说,它为什么WASN的原因之前没有工作)是因为Include="<AssemblyName>"与dll的名称相匹配,所以当创建单元测试时,Visual Studio将其视为相同的引用,并且不会尝试再次添加它。

相关问题