C# NET项目中的条件引用,是否可以消除警告?

C# NET项目中的条件引用,是否可以消除警告?,c#,reference,project,conditional,compiler-warnings,C#,Reference,Project,Conditional,Compiler Warnings,我有两个对SQLite程序集的引用,一个用于32位,另一个用于64位,如下所示(这是一个试图消除警告的测试项目,不要挂断路径): 我能摆脱这个警告吗 其中一种方法是在开发时将我的项目配置为32位,并在构建64位时让构建机器修复引用,但这似乎有点尴尬,而且可能会出错 还有其他选择吗 我想摆脱它的原因是TeamCity显然正在接收警告,并定期标记为我需要调查的内容,所以我想完全摆脱它 编辑:根据答案,我尝试了以下方法: <PropertyGroup Condition=" '$(Config

我有两个对SQLite程序集的引用,一个用于32位,另一个用于64位,如下所示(这是一个试图消除警告的测试项目,不要挂断路径):

我能摆脱这个警告吗

其中一种方法是在开发时将我的项目配置为32位,并在构建64位时让构建机器修复引用,但这似乎有点尴尬,而且可能会出错

还有其他选择吗

我想摆脱它的原因是TeamCity显然正在接收警告,并定期标记为我需要调查的内容,所以我想完全摆脱它


编辑:根据答案,我尝试了以下方法:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
    ...
    <SqlitePath>..\..\LVK Libraries\SQLite3\version_1.0.65.0\32-bit</SqlitePath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
    ...
    <SqlitePath>..\..\LVK Libraries\SQLite3\version_1.0.65.0\32-bit</SqlitePath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
    ...
    <SqlitePath>..\..\LVK Libraries\SQLite3\version_1.0.65.0\64-bit</SqlitePath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
    ...
    <SqlitePath>..\..\LVK Libraries\SQLite3\version_1.0.65.0\64-bit</SqlitePath>
</PropertyGroup>

...
..\..\LVK库\SQLite3\version\u 1.0.65.0\32位
...
..\..\LVK库\SQLite3\version\u 1.0.65.0\32位
...
..\..\LVK库\SQLite3\version\u 1.0.65.0\64位
...
..\..\LVK库\SQLite3\version\u 1.0.65.0\64位
然后在我的参考资料中:

<Reference Include="System.Data.SQLite">
    <SpecificVersion>False</SpecificVersion>
    <HintPath>$(SqlitePath)\System.Data.SQLite.DLL</HintPath>
</Reference>

假的
$(SqlitePath)\System.Data.SQLite.DLL
这消除了警告,但它是否正确?

如果没有SQL Lite的“AnyCPU”程序集,您将被困在单独的版本中

要执行单独的生成,请创建一个属性,该属性在条件属性组中提供正确的路径,然后使用该属性具有单个引用(即,将条件引用移到“项目”组之外)。有一个使用此类属性的示例(对于自定义FXCop扩展名),您可以看到在
.csproj
文件的开头定义了许多条件属性


(总结:VS不能处理MSBuild所能处理的所有可能性。)

在我看来,您的原始项目的问题是您有
True
指定
System.Data.SQLite,Version=1.0.61.0
,而实际的程序集是Version 1.0.65。在
Reference
中修复程序集名称中的版本应该会有所帮助。

我已经用我认为正确的内容编辑了我的答案,你能看一下并告诉我这是否是你的意思吗?嗯,你有一个观点,尽管它会为x86和x64生成警告,其中一个显然是正确的。我会调查的。显然我对文件有问题,在这种情况下,文件实际上是1.0.61。该引用是通过VisualStudio手动添加的,因此应该是正确的。虽然我会修复这些文件,但这并不是警告的罪魁祸首。还有两个建议-在
项目组
上放置
条件
,而不是在
引用
本身上;尝试绝对路径。将条件放入项目组没有帮助,只是以防万一有人遇到这种情况。VisualStudio愚蠢地认为程序集上仍然有引用,即使条件的计算结果为false。
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
    ...
    <SqlitePath>..\..\LVK Libraries\SQLite3\version_1.0.65.0\32-bit</SqlitePath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
    ...
    <SqlitePath>..\..\LVK Libraries\SQLite3\version_1.0.65.0\32-bit</SqlitePath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
    ...
    <SqlitePath>..\..\LVK Libraries\SQLite3\version_1.0.65.0\64-bit</SqlitePath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
    ...
    <SqlitePath>..\..\LVK Libraries\SQLite3\version_1.0.65.0\64-bit</SqlitePath>
</PropertyGroup>
<Reference Include="System.Data.SQLite">
    <SpecificVersion>False</SpecificVersion>
    <HintPath>$(SqlitePath)\System.Data.SQLite.DLL</HintPath>
</Reference>