条件参考

时间:2009-05-12 22:06:47

标签: c# visual-studio-2008 reference conditional-compilation

目前我们的.net代码不是特定于处理器的,但它依赖于库(Oracle / ODP.Net)。我们找到了一个直接编辑csproj文件的解决方案,并根据我们选择的构建配置将引用放入带有Condition子句的项目组中。我们有32位调试/发布和64位调试/发布,在构建该配置时,正确的程序集是引用。

这在构建时或多或少有效,但它会在Visual Studio(2008)中引起各种怪异。最终结果是相同的组件在引用下显示四次,三个具有黄色感叹号。它还会产生一些我无法摆脱的76个警告。我们试图针对0警告,因为我们想知道什么时候出现新警告,所以这有点问题。

是否有人知道条件引用的解决方案允许它看起来像一个引用(它确实是这样)并且在构建时没有填写我的警告?

2 个答案:

答案 0 :(得分:1)

唯一想到的就是拥有4个独立的项目文件......但是在你添加一个类时,在你不得不维护4个文件时,你可以在这里使用另一个csproj技巧:

<Compile Include="**\*.cs" />

其中(IIRC)说“包括文件夹结构中任何级别的所有cs文件”。

答案 1 :(得分:1)

我们找到了一个与我们想要的有点不同的答案,但我很喜欢它。如果在runtime-&gt; AssemblyBinding

下将其添加到配置文件中
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342"  />
<bindingRedirect oldVersion="2.111.6.20" newVersion="2.111.6.0" />
</dependentAssembly>

然后64位和32位版本使用相同的版本。我们所要做的就是在部署时在本地复制Oracle.DataAccess.dll并让它从GAC中提取。

谢谢!