条件引用

6

目前我们的.net代码不是特定于处理器的,但它依赖于特定库(Oracle/ODP.Net)。我们找到了一种解决方案,直接编辑csproj文件,并将引用放入基于所选构建配置的条件子句中的项目组中。我们有32位debug/release和64位debug/release,当您构建该配置时,正确的程序集会被引用。

这在构建时基本上可以工作,但会导致Visual Studio(2008)出现各种奇怪问题。最终结果是相同的程序集在引用下显示四次,其中三个带有黄色感叹号。它还生成了一些76个警告,我无法摆脱。我们试图达到0个警告,因为我们想知道何时出现新警告,所以这是一个问题。

是否有人知道条件引用的解决方案,使其看起来像单个引用(它确实是),并且不会在构建时填充我的警告?

2个回答

1
唯一想到的是使用4个单独的项目文件...但在你因为每次添加一个类都要维护4个文件而惊慌之前,你可以在这里使用另一个csproj技巧:
<Compile Include="**\*.cs" />

这个(如果我没记错的话)意思是“在文件夹结构中包含所有层级的cs文件”。


1
我们找到了一个与我们所寻找的略有不同但我还是很喜欢它的答案。如果你在运行时->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中获取即可。
谢谢!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接