C# 根据 x86 或 x64 切换依赖项
C# Switch dependencies depending on x86 or x64
我们有一个 x86 或 x64 的第三方 dll,现在我们必须根据 TargetPlatform 将 x64 dll 更改为 x86。谁能告诉我怎么做?
第一次尝试是用 post 构建脚本覆盖 dll。
使用配置管理器,我们可以使用 x86、x64 标记构建,使用宏 $(PlatformName) 我们可以命名 dll 相对于平台的路径 (x64/x86)
重要的是,宏必须直接在 *.csproj 文件中设置,例如:
<Reference Include="DLLNAME, Version=4.9.0.0, Culture=neutral, PublicKeyToken=TOKEN,
processorArchitecture=$(PlatformName)">
<HintPath>Lib$(PlatformName)\DLLNAME.dll</HintPath>
</Reference>
此外,如果有一个插件需要编译到主程序文件夹中,则必须直接在*.csproj 文件中更改构建路径。例如:
<OutputPath>..\..\bin$(PlatformName)\Debug\Features\</OutputPath>
那是因为 VS 转义了 '$('
和 ')'
编辑:
太快。 <OutputPath>
不理解宏。因此,我们必须更改每个构建配置的输出路径。例如:
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>..\..\bin\x86\Debug\Features\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>..\..\bin\x86\Release\Features\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
编辑 2:仅对于 x64 或 x86 依赖项,有条件属性可以将某些 cs 文件与 x86 或 x64 分开,例如:
<Reference Condition="'$(Platform)'=='x64'" Include="STPadLibNet">
<HintPath>Lib\x64\DLLNAME.dll</HintPath>
</Reference>
对于某些课程,您可以像这样使用它:
<Compile Condition="'$(Platform)'=='x64'" Include="MyClass.cs" />
我们有一个 x86 或 x64 的第三方 dll,现在我们必须根据 TargetPlatform 将 x64 dll 更改为 x86。谁能告诉我怎么做?
第一次尝试是用 post 构建脚本覆盖 dll。
使用配置管理器,我们可以使用 x86、x64 标记构建,使用宏 $(PlatformName) 我们可以命名 dll 相对于平台的路径 (x64/x86)
重要的是,宏必须直接在 *.csproj 文件中设置,例如:
<Reference Include="DLLNAME, Version=4.9.0.0, Culture=neutral, PublicKeyToken=TOKEN,
processorArchitecture=$(PlatformName)">
<HintPath>Lib$(PlatformName)\DLLNAME.dll</HintPath>
</Reference>
此外,如果有一个插件需要编译到主程序文件夹中,则必须直接在*.csproj 文件中更改构建路径。例如:
<OutputPath>..\..\bin$(PlatformName)\Debug\Features\</OutputPath>
那是因为 VS 转义了 '$('
和 ')'
编辑:
太快。 <OutputPath>
不理解宏。因此,我们必须更改每个构建配置的输出路径。例如:
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>..\..\bin\x86\Debug\Features\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>..\..\bin\x86\Release\Features\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
编辑 2:仅对于 x64 或 x86 依赖项,有条件属性可以将某些 cs 文件与 x86 或 x64 分开,例如:
<Reference Condition="'$(Platform)'=='x64'" Include="STPadLibNet">
<HintPath>Lib\x64\DLLNAME.dll</HintPath>
</Reference>
对于某些课程,您可以像这样使用它:
<Compile Condition="'$(Platform)'=='x64'" Include="MyClass.cs" />