Tag: 版本

检测Outlook安装并动态加载INterop.Outlook

我在VS2010中有一个Windows窗体应用程序。 它引用了Interop.Outlook(2003)。 然后,我重新安装了Windows XP和VS2010,但没有安装Outlook。 现在,该项目没有编译。 我想这个,如果Outlook没有安装在我的程序执行的机器上,我的应用程序将无法工作。 我需要知道我是否检测到Outlook已安装,并动态加载Interop.Outlook.dll(用于在.NET 4中使用Outlook PIA或Embedded Interop类型)。 如果计算机安装了Outlook(2003,2007,2010,可能需要代码来检测版本并执行Outlook版本的兼容性),则应用程序可以正常运行Outlook。 如果计算机未安装Outlook,则应用程序可以正常运行而无需functionOutlook。 关于它的任何示例源代码或goog模式和实践?

C#确定操作系统是Windows 7或Windows Windows 2008

我使用的是.NET framework 3.5版本,该程序必须检测所有Windows版本(包括Windows XP,Windows Vista,Windows 7,Windows 8,Windows 10,Windows Server 2008,Windows Server 2008 R2,Windows Server 2012)。 问题是如何在以下情况下确定操作系统? Windows Vista和Windows Server 2008版本号均为6.0。 Windows 7和Windows Server 2008 R2版本号均为6.1。 Windows 8和Windows Server 2012版本号均为6.2。 我找到了下面的代码,但我无法使用,因为我使用的是.NET Framework 3.5。 var name = (from x in new ManagementObjectSearcher(“SELECT * FROM Win32_OperatingSystem”).Get().OfType() select x.GetPropertyValue(“Caption”)).FirstOrDefault(); return name != null ? name.ToString() : “Unknown”; 我怎么解决这个问题?

计算机上的CSC版本

我通过Visual Studio Code快速更改代码。 如你所知它没有内置编译器所以我通过CMD使用CSC。 它只适用于(代码<= C#4.6和代码<= .NET 4.5),因为我拥有的CSC版本。 并且存在问题,因为我在新的C#6.0和.NET 4.6中编写并且无法通过CSC编译。 我已经安装了VS 2015与.NET 4.6和compilie通过VS 2015工作良好。 我无法在计算机中找到CSC版本.NET 4.6中的CSC。 我在Windows注册表中使用.NET 4.6(注册表)。

无法解释的MissingFieldException

在下面的代码片段中,它抛出一个MissingFieldException:Field Not Found:DepthBidLevelsexception,但仅限于下面描述的某些奇怪情况。 for(int i=DomSize-1; i>=0; i–) { fixed( ushort *p = binary.DepthBidLevels) { if( i!=DomSize-1) { builder.Append( “,”); } builder.Append( *(p + i)); } 二进制变量的类型是一个在单独的组件中定义的结构: unsafe public struct TickBinary { public const int DomLevels = 5; public const int SymbolSize = 8; public const int minTickSize = 256; public long Symbol; public byte contentMask; […]

.NET – 我目前运行的框架版本(来自C#)

使用C#,请问.NET Runtime运行哪个版本的最佳方法是什么?

如何在我的应用程序中显示上次构建的内部版本号和/或日期时间?

我知道我可以这样做以获得应用程序的官方(发布/发布)版本号: string version = Assembly.GetExecutingAssembly().GetName().Version.ToString(); this.Text = String.Format(“Platypi R Us – version {0}”, version); …但这仅显示我的应用程序的“发布版本”*(“1.0.0.0”)。 我想显示内部版本号。 来自项目| 属性| 发布标签。 除此之外,或者除此之外,我想显示最后一次构建的日期和时间,以便它说“Platypi R Us – 3.14版(2012年7月17日16:22)”

在.net 4.0上执行应用程序时,在.net 2.0下编译

假如说: 下面的C#源代码是在.NET 2.0(CLR 2.0)下编译的; 和 上面的应用程序使用下面列出的app.config ; 和 只有.NET 4.0(CLR 4.0)安装在执行应用程序的客户端的环境中, 然后在内部加载哪个版本的.NET来在客户端环境中执行应用程序? 描述 下面的控制台应用程序将在控制台中显示其CLR版本为v4.0.30319 ,但@Reed Copsey对堆栈的回答( CLR 2.0与4.0性能? )表明在这种情况下加载了.NET 2.0。 此外,在MSDN上,它表示当useLegacyV2RuntimeActivationPolicy设置为false false : 使用.NET Framework 4及更高版本的默认激活策略, 即允许旧版运行时激活技术将CLR版本1.1或2.0加载到该过程中。 尽管app.config具有.NET 4.0配置,但听起来像是加载了.NET 2.0。 我误解了什么吗? 资源 C#源代码 namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string version = Environment.Version.ToString(); Console.WriteLine(version); } } } app.config

System.Version未序列化

我有一个带有System.Version属性的类,如下所示: 版 建立:111 专业:1 MajorRevision:0 轻微:1 MinorRevision:10 修订版:10 当我序列化类时,版本始终为空: Client类看起来像: [Serializable] public class Client { public string Description; public string Directory; public DateTime ReleaseDate; public Version Version; }

在不重新编译项目的情况下升级C#项目中的引用dll

我需要使用C#应用程序的内置版本并更改其中一个引用dll。 最好的方法是什么,我在引用dll上关闭了特定的版本,但是当我测试用新版本替换dll时,我得到“无法加载文件或程序集XXXXX,版本= XXXXX。是有一种方法可以阻止加载器关心dll的版本,这样dll只会尝试加载?

在.NET中编译与版本无关的DLL

脚本 我有两个围绕Microsoft Office的包装器,一个用于2003,一个用于2007.由于两个版本的Microsoft Office并行运行“非官方可能”,也不是微软推荐的,我们有两个盒子,一个用Office 2003和另一个使用Office 2007.我们分别编译包装器。 DLL包含在我们的解决方案中,每个框都有相同的签出但Office 2003或2007“卸载”,因此它不会尝试编译该特定的DLL。 如果不这样做将导致编译错误,因为Office COM DLL不可用。 我们使用.NET 2.0和Visual Studio 2008。 事实 由于Microsoft在2007年神秘地改变了Office 2003 API,重命名和更改了一些方法( 叹气 )从而使它们不向后兼容,我们需要两个包装器。 我们为每台构建机器提供了解决方案,并激活了一个Office DLL。 例如:具有Office 2003的计算机已卸载“Office 2007”DLL,因此无法对其进行编译。 另一个盒子是相同的想法,但反过来。 这一切都是因为我们不能在同一个盒子中有2个不同的Office用于编程。 (根据微软,你可以在技术上将两个Office放在一起),但不能用于编程,也不能没有一些问题。 问题 当我们更改应用程序版本(例如从1.5.0.1到1.5.0.2)时,我们需要重新编译DLL以匹配新版本的应用程序,这是自动完成的,因为Office包装器包含在解决方案中。 由于包装器包含在解决方案中,因此它们inheritance了APP版本,但我们必须执行两次,然后将另一个DLL“复制”到创建安装程序的计算机上。 (痛苦……) 题 是否可以编译一个可以与任何版本的应用程序一起使用的DLL,尽管它“更老”? 我已经阅读了一些关于清单的内容,但我从未与这些内容进行过互动。 任何指针将不胜感激。 这样做的秘密原因是我们没有更改“年龄”中的包装器,微软也没有更改其古老的API,但我们正在重新编译DLL以匹配我们制作的每个版本上的应用程序版本。 我想自动化这个过程,而不是依赖两台机器。 我无法从项目中删除DLL(它们都没有),因为存在依赖项。 我可以创建第三个“主包装器”但尚未考虑过它。 有任何想法吗? 有其他要求相同的人吗? UPDATE 澄清: 我有一个N项目的解决方案。 “应用程序”+ Office11Wrapper.dll + Office12Wrapper.dll。 两个“包装器”都使用应用程序的依赖关系+解决方案中的其他库(数据层,业务层,框架等) 每个包装器都有相应Office包的引用(2003和2007)。 如果我编译并且没有安装Office 12,则会从Office12Wrapper.dll中找不到Office 2007库的错误。 […]