Tag: .net 3.5

克隆/复制将访问者主体添加到新类型

我正在从现有类型创建动态程序集中的新类型,但只包含选定的属性: public class EmitTest { public Type Create(Type prototype, Type dynamicBaseType, List includedPropertyList) { AssemblyName aName = new AssemblyName(“DynamicAssembly”); AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly( aName, AssemblyBuilderAccess.RunAndSave); ModuleBuilder modulBuilder = assemblyBuilder.DefineDynamicModule(aName.Name, aName.Name + “.dll”); string typeName = string.Concat(prototype.Name, “_DynamicType_”, Guid.NewGuid().ToString().Replace(“-“, string.Empty)); TypeBuilder typeBuilder = modulBuilder.DefineType( typeName, TypeAttributes.Public, null, new Type[] { }); foreach (string s in includedPropertyList) […]

在仅具有2.0框架的服务器上执行编译3.5代码的问题

我似乎无法在我的开发服务器上启动并运行我的应用程序,我不知道为什么。 我在VS 2008中编译了我的代码,目标框架为3.5。 我使用3.5主要是因为我已经相当广泛地实现了LINQ。 编译并运行本地没有任何问题。 挂断的是我的服务器只有2.0 .Net框架,升级到3.5显然不会发生。 在做了一些研究后,我的印象是,只要我试图执行编译代码,服务器就不需要安装3.5。 今天我试图发布到服务器,我无法在WEB.CONFIG中通过此错误 配置错误 分析器错误消息:不允许子节点。 providerOption name =“CompilerVersion”value =“v3.5”/ 编辑添加问题:我看过一些关于可能设置我对“复制本地”的引用的post,这可能允许我在2.0服务器上运行。 思考?

是否可以在winforms应用程序中定义左手ComboBox(即左侧的滚动条)?

我有一个WinForms应用程序,正在平板电脑上使用触摸屏。 该应用程序是使用Visual Studio 2008开发的,并使用.Net框架的3.5版本。 我收到了左撇子客户的请求,要求将ComboBox的滚动条放在下拉区域的左侧而不是右侧,但我不知道该怎么做,或者甚至可以做。 有没有人以前做过这个或知道怎么做?

在ScrollViewer.ComputedVerticalScrollBarVisibility更改上调整listview列的大小

我使用星型转换器来获得相对大小的listview列 ,但我目前的问题是,如果滚动条可见或不可见,则不会考虑这一点。 我试着在代码中添加如下内容: var scroll = FindVisualChild(listView); var offset = 0.0; if (scroll.ComputedVerticalScrollBarVisibility == Visibility.Visible) offset = SystemParameters.ScrollWidth + 5; 但是,大小调整是在滚动条可见性之前完成的,并且滚动始终显示为“ Collapsed 。 所以,我的问题是,如何适当调整列的大小。 我试图在ScrollViewer.ComputedVerticalScrollBarVisibility上添加一个触发器,但在那里没有取得任何成功。 我尝试使用基于此链接的自定义代码 ,但目前总是以空白列表视图结束(可能是由于使用ItemsPresenter的listview,但我目前不确定)。 这是我尝试过的listview设置: 安装者只是为了看它是否有效……但它们根本就没有设置

在对C#.NET 3.5服务器进行DCOM调用时,如何可靠地检查客户端身份?

我有一个旧的Win32 C ++ DCOM服务器,我正在重写使用C#.NET 3.5。 客户端应用程序位于远程Windows XP计算机上,也是用C ++编写的。 这些客户端必须保持不变,因此我必须在新的.NET对象上实现接口。 这已经完成,并且正在成功地实现接口,并且正确地从旧客户端到新.NET对象进行所有调用。 但是,我在从DCOM客户端获取调用用户的身份时遇到问题。 为了尝试识别发起DCOM呼叫的用户,我在服务器上有以下代码…… [DllImport(“ole32.dll”)] static extern int CoImpersonateClient(); [DllImport(“ole32.dll”)] static extern int CoRevertToSelf(); private string CallingUser { get { string sCallingUser = null; if (CoImpersonateClient() == 0) { WindowsPrincipal wp = System.Threading.Thread.CurrentPrincipal as WindowsPrincipal; if (wp != null) { WindowsIdentity wi = wp.Identity as WindowsIdentity; if […]

为什么我从VirtualPathUtility ToAbsolute获得一些具有某些路径的HttpException?

我正在尝试使用VirtualPathUtility.ToAbsolute将应用程序相对路径(例如~/MyPage.aspx为应用程序绝对路径,例如/MySite/MyApp/MyPage.aspx 。 但是,对于某些路径,我收到一个HttpException说我的路径“不是一个有效的虚拟路径”。 例子: // This works: var abs1 = VirtualPathUtility.ToAbsolute(“~/MyPage.aspx#anchor”); // This errors: var abs2 = VirtualPathUtility.ToAbsolute(“~/MyPage.aspx?key=value”); 这是怎么回事?

C#和SQL Server 2008 CLR序列化问题

我试图在C#中创建一个SqlUserDefinedAggregate以附加到我的SQL Server 2008实例。 我正在使用.NET 3.5。 基本上,我想计算我看到字符串值的次数。 由于使用它确实需要是一个聚合函数。 该函数的代码在逻辑上是合理的,但是当我去部署时,我得到了这个: 部署错误SQL01268:.Net SqlClient数据提供程序:消息6222,级别16,状态1,行1类型“GEMCLR.CountTypes”标记为本机序列化,但类型为“GEMCLR.CountTypes”的字段“m_types”对本机无效序列化。 m_types是Dictionary 。 我的代码大纲如下所示: [Serializable] [Microsoft.SqlServer.Server.SqlUserDefinedAggregate (Format.Native)] public struct CountTypes { private Dictionary m_types; public void Init () { m_types = new Dictionary (); } public void Accumulate (SqlString value) { … } public void Merge (CountTypes group) { … } public SqlString Terminate () { […]

最佳实践 – 从C#中的generics集合中删除项目

我在Visual Studio 2008中使用C#和.NET 3.5。 我有一个通用字典,它将事件类型映射到通用的订阅者列表。 订阅者可以订阅多个事件。 private static Dictionary<EventType, List> _subscriptions; 要从订阅列表中删除订阅者,我可以使用这两个选项中的任何一个。 选项1: ISubscriber subscriber; // defined elsewhere foreach (EventType event in _subscriptions.Keys) { if (_subscriptions[event].Contains(subscriber)) { _subscriptions[event].Remove(subscriber); } } 选项2: ISubscriber subscriber; // defined elsewhere foreach (EventType event in _subscriptions.Keys) { _subscriptions[event].Remove(subscriber); } 我有两个问题。 首先,请注意选项1在删除项目之前检查是否存在,而选项2使用powershell删除,因为Remove()不会抛出exception。 在这两个中,这是首选的“最佳实践”方式吗? 第二,是否有另一种“更干净”,更优雅的方式来实现这一点,可能使用lambda表达式或使用LINQ扩展? 我仍然适应这两个function。 谢谢。 编辑 为了澄清,我意识到选项1和2之间的选择是速度(选项2)与可维护性(选项1)的选择。 在这种特殊情况下,我不一定会尝试优化代码,尽管这肯定是值得考虑的。 我想要了解的是,如果这样做有一个普遍成熟的做法。 如果没有,您将在自己的代码中使用哪个选项?

可编辑的WPF ListView

当用户双击某个项目时,我想使ListView可编辑。 我意识到网上有很多样本,但是,这些都是基于IsSelected属性,而不是处理双击事件。 任何想法或指针? 更新: 所以我遇到的另一个问题是,如何才能获得有问题的ListViewitem的数据模板中的ListViewitem ? 我迷路的地方是我需要进入控件的位置,根据是否正在编辑项目来启用或禁用控件。 目前, ListView数据模板如下所示: 引用的样式如下所示: BoolToVisibilityConverter是ListViewItem的IsSelected属性的转换器,然后确定ListViewItem的Visibility 。 从当前的XAML标记中可以看出,编辑控件将在项目选择时激活(变为可见),而不是项目双击。 更新2:到目前为止,所有建议只能使我解决方案的一半。 有没有人有一个可行的解决方案,如何访问我需要使可见/不可见的实际控件? 我会将答案标记为解决方案!

无法将.net 3.5网站添加到IIS Express

所以,我的问题是我有一个相当大的ASP.NET 3.5项目,我试图使用IIS Express安装在本地运行。 我是团队中使用IIS Express运行此项目和其他项目的众多开发人员之一,我实际上每天运行.NET 4.0站点(使用本地SSL),没有任何问题。 作为参考,我的机器使用Microsoft Visual Studio 2010运行Windows 7 Ultimate 64位,我是本地计算机的管理员。 Visual Studio以管理权限运行,我确保inetmgr中列出的所有应用程序池都在运行。 这是我尝试在本地运行项目时获得的工作流程: 当我第一次运行我的项目时,或者如果我删除Microsoft WebMatrix中列出的任何站点(IIS Express的配置实用程序,类似于inetmgr),我得到以下消息序列: (1)Microsoft Visual Studio的Yes-No对话框指出, The local IIS URL http://localhost:2000/site/path/ specified for Web project My.Web.Project has not been configured. In order to open this project the virtual directory needs to be configured. Would you like to create the […]