如何从Visual Studio 2010扩展中获取默认项目创建目录?默认情况下,此目录为:
C:\Users\<username>\Documents\Visual Studio 2010\Projects
Run Code Online (Sandbox Code Playgroud)
我猜这是通过工具 - >选项窗口完成的,但我不知道如何通过SDK获得此功能.
乍一看,以下看起来应该让我接近:
DTE2 dte = CType(GetService(typeof(SDTE)), DTE2);
Object props = dte.Properties("Projects and Solutions", "General");
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
System.Runtime.InteropServices.COMException was unhandled by user code
ErrorCode=-2147352565
Message=Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))
Run Code Online (Sandbox Code Playgroud) c# visual-studio-2010 visual-studio-sdk visual-studio-2010-sp1 visual-studio-extensions
我试图在较低的层次上理解ASP.Net MVC.具体来说,我试图了解MVC运行时是如何开始的.对于我最初深入研究调用堆栈/反编译,它似乎由MvcRouteHandler启动,然后MvcRouteHandler构造MvcHandler.但是,我似乎无法找到MvcRouteHandler的注册位置.这个RouteHandler如何被添加到ASP.Net管道?
更新
在进一步检查后,我已将MvcRouteHandler构造跟踪到RouteCollectionExtensions类中,该类看起来包含RouteCollection类的扩展.包含构造函数的特定方法具有以下定义:
public static Route MapRoute(this RouteCollection routes,
string name,
string url,
object defaults,
object constraints,
string[] namespaces)
Run Code Online (Sandbox Code Playgroud)
我相信密钥可以在这行代码中找到:
Route route = new Route(url, new MvcRouteHandler());
Run Code Online (Sandbox Code Playgroud)
所以,对我而言,这是MvcRouteHandler被分配的地方.整个事件链如下所示:
一切都始于Global.asax.cs
Application_Start()
RouteConfig.RegisterRoutes
RouteCollectionExtensions.MapRoute(this RouteCollection routes, string name, string url, object defaults)
RouteCollectionExtensions.MapRoute(this RouteCollection routes, string name, string url, object defaults, object constraints)
RouteCollectionExtensions.MapRoute(this RouteCollection routes, string name, string url, object defaults, object constraints, string[] namespaces)
Run Code Online (Sandbox Code Playgroud)
从这里开始,它只是路由匹配的问题,然后使用MvcRouteHandler来调用MvcHandler并启动整个事件链.所以我最初假设MvcRouteHandler在某个配置中注册是错误的.相反,它是通过从global.asax.cs文件中的Application_Start事件开始的代码配置的.
它是否正确?
我有以下XML结构:
<root>
<Level1 IsEnabled="0"> <!-- Disabled -->
<Level2 IsEnabled="1">
<Level3 IsEnabled="1">
<Level4 IsEnabled="1">
<Child /> <!-- Don't include this one -->
</Level4>
</Level3>
</Level2>
</Level1>
<Level1 IsEnabled="1">
<Level2 IsEnabled="1">
<Level3 IsEnabled="0"> <!-- Disabled -->
<Level4 IsEnabled="1">
<Child /> <!-- Don't include this one -->
</Level4>
</Level3>
</Level2>
</Level1>
<Level1 IsEnabled="1">
<Level2 IsEnabled="1">
<Level3 IsEnabled="1">
<Level4 IsEnabled="1">
<Child /><!-- Include this one -->
</Level4>
</Level3>
</Level2>
</Level1>
</root>
Run Code Online (Sandbox Code Playgroud)
我想选择其中任何祖先不包含IsEnabled ="0"的所有子节点.所以对于上面的XML我只想选择最后一个子节点.此外,如果祖先节点不包含IsEnabled属性,则仍应包含该子节点.
有人可以提供我应该与企业库4.1中的Microsoft Unity应用程序块一起使用的XML配置,以实现与以下相同的结果吗?
using System;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.InterceptionExtension;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
IUnityContainer container = new UnityContainer();
container.AddNewExtension<Interception>();
container.RegisterType<ILogger, Logger>();
container.Configure<Interception>().SetInterceptorFor<ILogger>(new InterfaceInterceptor());
var logger = container.Resolve<ILogger>();
logger.Write("World.");
Console.ReadKey();
}
}
public interface ILogger
{
[Test]
void Write(string message);
}
public class Logger : ILogger
{
public void Write(string message)
{
Console.Write(message);
}
}
public class TestAttribute : HandlerAttribute
{
public override ICallHandler CreateHandler(IUnityContainer container)
{
return new TestHandler();
}
}
public class TestHandler …Run Code Online (Sandbox Code Playgroud) 我有一个字符串,其中包含长度为以下字段的标头。
例子:
fillerfillerCA20 abcdefghijklmnopqrst CA5 zyxwvfillerfiller
Run Code Online (Sandbox Code Playgroud)
我需要找到两个值:abcdefghijklmnopqrst 和 zyxwv
我打算使用反向引用来获取量词的长度:
(?i)ca(?<length>\d+?)\x20.{\k<length>}\x20?
Run Code Online (Sandbox Code Playgroud)
但显然,不支持在量词中使用反向引用。
我怎样才能做到这一点?
我有一个 WPF 应用程序,它有几个用于各种目的的模态窗口。这可以通过使用该ShowDialog函数轻松实现。但是,在我的应用程序中,我有一个计时器来测量将导致用户注销的空闲时间(即没有鼠标移动或击键)。有没有办法(当这个计时器触发时)找到并关闭所有打开的模式窗口而无需明确跟踪每个窗口?
更新 我还想关闭任何 MessageBox.Show 实例。这可能吗?
谢谢,马特
我正在创建一个将在沙盒环境中运行代码的应用程序.此环境应仅允许不受信任的代码处理明确指定的资源并返回已定义的数据类型.我正在使用本文中的主体来设置沙箱:
我还有一些代码需要在沙盒环境中运行.不幸的是,当我尝试设置在沙箱中运行的类型时,我收到以下错误:
违反了类型的继承安全规则:'MyTypeRunningInSandbox'.派生类型必须与基本类型的安全可访问性匹配,或者不太容易访问.
我不知道为什么我会得到这个错误,因为基类型和派生类型都是由我创建的,并且它们都不应该比另一个更安全或更不安全.
我的应用程序结构(帮助您理解):
TypeLoader class
\
Trusted Sandbox Manager (i.e. sets up a the new sandbox)
\ (the error is happening in this class while creating the
| new app domain)
|
|Untrusted Sandbox Manager (i.e. runs the untrusted code)
Run Code Online (Sandbox Code Playgroud)
如果您将我的解决方案与上面的Microsoft文章进行比较,我的代码将失败,相当于以下行:
ObjectHandle handle = Activator.CreateInstanceFrom(
newDomain, typeof(Sandboxer).Assembly.ManifestModule.FullyQualifiedName,
typeof(Sandboxer).FullName );
Run Code Online (Sandbox Code Playgroud)
有关如何解决此问题的任何想法?
我正在考虑创建一个工具来加载SQL Server 2008数据库中的varbinary(max)字段,其中的文件是从打开的文件对话框中选择的.我可以使用任何此类工具或等效工具吗?我的SQL服务器位于托管环境中,我无法对服务器进行物理访问,因此无法使用TSQL加载它.
我查看了 Wiki 上的文档,但似乎有点单薄。如何使用 Cecil 确定类型是否实现给定接口?对于我的特定实现,重要的是我实际上没有将类型加载到 AppDomain 中。
这是我到目前为止的代码:
Dim outputModule As ModuleDefinition = ModuleDefinition.ReadModule(outputFile)
For Each assemblyType As TypeDefinition In outputModule.Types
'How to determine if assemblyType implements a specific interface?
Next
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用类似于以下的定义调用方法(简化以避免混淆):
public static void Register<T>(T value) where T : BaseClass, IInterface
Run Code Online (Sandbox Code Playgroud)
只要我有一个定义这两个值的类实例,这个工作正常.当我将`BaseClass'传递给方法然后尝试在上面的声明中使用该实例时,会出现问题.例如:
public class MyClass
{
public MyClass(BaseClass value)
{
Register(value);
}
}
Run Code Online (Sandbox Code Playgroud)
我可以将实现BaseClass和IInterface的类的实例传递给构造函数,但是当我尝试在Register方法中使用该值时,我得到一个编译错误,指出:
类型'BaseClass'不能用作泛型类型或方法'Register(T)'中的类型参数'T'.没有从"BaseClass"到"IInterface"的隐式引用转换.
如果我改变构造函数中的类型,如下所示:
public class MyClass
{
public MyClass(IInterface value)
{
Register(value);
}
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误说明:
"IInterface"类型不能用作泛型类型或方法"Register(T)"中的类型参数"T".没有从"IInterface"到"BaseClass"的隐式引用转换.
这似乎有点像22. 有没有办法可以定义参数来表明它必须同时实现BaseClass和IInterface?
c# ×4
.net ×1
.net-4.0 ×1
aop ×1
asp.net ×1
cas ×1
generics ×1
iis-7 ×1
inheritance ×1
mono.cecil ×1
regex ×1
varbinarymax ×1
vb.net ×1
wpf ×1
wpf-controls ×1
xpath ×1