gpt4 book ai didi

.net - 如何根据开发人员的操作系统架构在 Visual Studio 中复制文件?

转载 作者:行者123 更新时间:2023-12-04 21:36:09 25 4
gpt4 key购买 nike

我正在使用 Visual Studio 2015 编写 C# 应用程序。此应用程序面向“任何 CPU”(未启用“首选 32 位”选项),这意味着应用程序编译为将在 32 位模式下运行的单个构建目标32 位操作系统和 64 位操作系统上的 64 位模式。

此应用程序要求将某个 native DLL 复制到其输出文件夹(即 bin/Debug 或 bin/Release 文件夹)。这个 DLL 有单独的 x86 和 x64 版本,需要根据开发人员的操作系统将正确的版本复制到输出文件夹。

到目前为止,我已经发现我可以通过在我的 .csproj 文件中添加如下内容来有条件地将文件复制到输出文件夹:

<ItemGroup Condition="MY CONDITION HERE">
<Content Include="MyNativeLib.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>

所以我的问题是,我如何编写一个相当于“开发人员的操作系统是 x86”或“... x64”的条件?

(要非常清楚,我不是问如何根据平台构建目标有条件地复制文件,在我的情况下始终是“任何 CPU”。我问的是如何根据操作系统架构有条件地复制文件Visual Studio 恰好正在运行。)

最佳答案

感谢对上面原始问题的一些有用评论,它们为我指明了正确的方向,我已经想出了如何解决这个问题:

我决定在构建后事件中复制该文件并使用批处理脚本命令来检查 PROCESSOR_ARCHITECTUREPROCESSOR_ARCHITEW6432环境变量。 (有关这些变量的更多信息 here 。)

以下是如何在构建后事件中执行此操作的示例:

set isX64=FALSE
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" set isX64=TRUE
if "%PROCESSOR_ARCHITEW6432%"=="AMD64" set isX64=TRUE
if "%isX64%"=="TRUE" (
echo "Copying x64 dependencies..."
copy "$(ProjectDir)Dependencies\x64\MyNativeLib.dll" "$(TargetDir)"
) ELSE (
echo "Copying x86 dependencies..."
copy "$(ProjectDir)Dependencies\x86\MyNativeLib.dll" "$(TargetDir)"
)

大概我也可以在 .csproj 文件中使用这些环境变量,因为我在原始问题中考虑过这样做,但是在构建后事件中执行它对我来说似乎更容易和更清晰,而且我已经在使用构建后复制一些其他文件。

关于.net - 如何根据开发人员的操作系统架构在 Visual Studio 中复制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37383213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com