【发布时间】:2017-11-03 20:43:59
【问题描述】:
我确实有这个问题,ProcessStartInfo 不包含定义动词,所以我不能做'runas'。在 VisualStudio 2015 上,使用 ProcessStartInfo 的项目 'foo' 确实有这个定义 'verb' - 通过检查类来确认。在 VisualStudio 2017 上运行的其他项目似乎无法识别此方法。此外,该类本身缺少该方法。现在我不确定为什么以及如何做到这一点?
完整的错误代码:
Severity Code Description Project File Line Suppression State
Error CS1061 'ProcessStartInfo' does not contain a definition for 'Verb'
and no extension method 'Verb' accepting a first argument of type
'ProcessStartInfo' could be found (are you missing a using directive or an
assembly reference?) project3cx C:\Users\Boss\Documents\Visual Studio
2017\Projects\project\project3cx\Program.cs 64 Active
ProcessStartInfo 类的唯一区别是版本为 4.0.0.0
#region Assembly System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.dll
#endregion
有定义“动词”并且版本 4.1.0.0 没有定义动词。
#region Assembly System.Diagnostics.Process, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// C:\Users\Boss\.nuget\packages\system.diagnostics.process\4.3.0\ref\netstandard1.4\System.Diagnostics.Process.dll
#endregion
我还可以看到一个项目程序集由 nuget 管理,另一个不是。我已经安装/更新了 nuget System.Diagnostics 包,但无济于事。有什么帮助吗?
【问题讨论】:
-
看看程序集名称:
System.Diagnostics.Process.dllvsSystem.dll。 -
你能显示代码吗?属性还是there
-
这里出了点问题——
Verb是一个属性。扩展属性(还)不是一件事。然而错误表明它正在寻找扩展方法。虽然无法看到代码,但很难提供帮助。 -
注意你选择的项目模板,.NETCore 和 .NETStandard 不支持 Verb。一个纯 Windows 功能,它完全不能移植到 Linux 和 MacOS。 UAC 提升也是如此。
-
@HansPassant 我明白了,是的,我正在尝试开发 2 个控制台应用程序,一个用于 Windows,一个用于 linux。我不知道
verb仅适用于 Windows。
标签: c# visual-studio nuget nuget-package system.diagnostics