gpt4 book ai didi

c# - 在 C# 设计时读取项目的目标平台

转载 作者:行者123 更新时间:2023-12-04 10:41:55 27 4
gpt4 key购买 nike

是否可以在设计模式期间使用 C# 编程语言检测 winform 项目的目标平台是否设置为 AnyCPU?

例如,创建一个按钮控件,单击该控件将确定项目的目标平台是设置为 AnyCPU、x86 还是 x64?

这应该在设计模式下由托管控件检测到,例如单击按钮确定正在使用的项目的目标平台。

使用的语言是 C#。

最佳答案

您可以添加对 EnvDTE 的引用并将这样的属性添加到您的控件中:

[EditorBrowsable(EditorBrowsableState.Never)]
public string TargetPlatform
{
get
{
if (!DesignMode)
return null;

var host = (IDesignerHost)Site.GetService(typeof(IDesignerHost));
var dte = (EnvDTE.DTE)host.GetService(typeof(EnvDTE.DTE));
var project = dte.ActiveSolutionProjects[0];
return project.ConfigurationManager.ActiveConfiguration.Properties
.Item("PlatformTarget").Value;
}
}

注:答案是证明解决方案有效的 PoC。对于实际场景,它应该是单独程序集中控件设计者的设计时唯一属性。然后你不需要分发额外的程序集。

还有 [Designer]属性应该使用类型的名称而不是类型本身。这与 windows 窗体设计器的工作方式相同。您不需要随应用程序一起分发额外的设计时程序集,但是作为控件安装程序的 nuget 包或 VSIX 的一部分,它们应该分发以在 VS 中工作。

关于c# - 在 C# 设计时读取项目的目标平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59892525/

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