以下是如何从加载项获取当前解决方案目录:
_applicationObject = (DTE2)application; // retrieved from OnConnection method
string solutionDir = System.IO.Path.GetDirectoryName(_applicationObject.Solution.FullName);
Run Code Online (Sandbox Code Playgroud)
你会如何通过VSPackage做到这一点?
我正在将Visual Studio插件迁移到VSPackage,因为我打算添加一些需要与IDE更深入集成的用户控件.
我发现了一些关于加载项与集成包的相对优点的一些很好的参考,例如:http: //nayyeri.net/visual-studio-addin-vs-integration-package-part-1
以及关于VSPackages上的msdn的一些很好的教程,例如:http: //msdn.microsoft.com/en-us/library/cc138589.aspx
我还没有找到关于加载项(例如DTE)中的更高级接口如何映射到VSPackage中的低级接口的良好引用(在msdn或其他方面).
有没有什么好的参考资料来帮助从附加接口到VSPackage接口的一般映射?
我正在编写一些设计时间代码.我想使用这个片段:( 在这里找到)
var dte = (EnvDTE.DTE) GetService(typeof(EnvDTE.DTE));
if (dte != null)
{
var solution = dte.Solution;
if (solution != null)
{
string baseDir = Path.GetDirectoryName(solution.FullName);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是这不能编译.(GetService不是已知的方法调用)我尝试添加Microsoft.VisualStudio.Shell(和Microsoft.VisualStudio.Shell.10.0),但它没有帮助.
在互联网上环顾四周,我发现你需要一个IServiceProvider来调用它.
但所有显示如何使IServiceProvider使用EnvDTE的示例.
所以,要获得当前的EnvDTE,我需要IServiceProvider.但要获得IServiceProvider,我需要一个EnvDTE.(我的桶里有一个洞......)
所以,这是我的问题:
在普通的WPF应用程序中,如何获取EnvDTE 的当前实例?
注意:我不是在寻找任何旧的EnvDTE实例.我需要一个用于我当前的Visual Studio实例(我一次运行3-4个Visual Studio实例.)
.net visual-studio-2010 visual-studio envdte visual-studio-extensions
我不确定这个的语法.我正在尝试将这个C#代码翻译成F#.
struct LASTINPUTINFO
{
public uint cbSize;
public uint dwTime;
}
public class IdleTimer
{
[DllImport("User32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
}
Run Code Online (Sandbox Code Playgroud)
这就是我到目前为止所拥有的.
type LASTINPUTINFO = {
cbSize : UInt32;
dwTime : UInt32;
}
type IdleTimer =
[<DllImport("User32.dll")>]
[<return: MarshalAs(UnmanagedType.Bool)>]
extern GetLastInputInfo(plii : LASTINPUTINFO ref)
Run Code Online (Sandbox Code Playgroud) 我有一个C#extern声明,如下所示:
[DllImport("something.dll")]
public static extern ReturnCode GetParent(IntPtr inRef, out IntPtr outParentRef);
Run Code Online (Sandbox Code Playgroud)
如何将其翻译为F#?