我正在开发一个.NET 3.5 C#桌面应用程序.它应该可以通过插件扩展.
是否有任何文章讨论MEF和Mono.AddIn之间的差异,以帮助我做出明智的决定?
或者更好的是你有这两个框架的经验并可以评论它们?
谢谢,帕特里克
我已经安装了一个重新定义一些热键的VisualStudio插件,我需要回到Visual Studio的标准热键中.我知道在工具 - >选项 - >环境 - >键盘下我可以重新定义热键,我做到了.问题是,现在似乎我的热键Ctrl-E,C有两个命令关联,插件一个和标准一个.当我按下那个组合时,visual studio运行插件命令而不是标准命令.
问题是我不知道插件命令名称,所以除非我通过所有命令查看相关的热键,否则我无法取消关联.有没有办法发现与特定热键关联的命令?
基于SAML sp的身份验证具有以下简短的工作流程
我的问题是sp如何使用此SAMLResponse令牌.逻辑是什么?如果我能得到一些JAVA代码帮助它将是有益的.
我有一个postgresql数据库,我想查询表"位置",以检索与用户输入的名称匹配的所有位置的名称.列名是"LocationName".我正在使用带有C#的ASP.net.
NpgsqlConnection con = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ToString());
NpgsqlCommand cmd = new NpgsqlCommand("Select * from \"Locations\" where \"LocationName\" LIKE \"%@loc_name%\"", con);
cmd.Parameters.AddWithValue("@loc_name", Location_Name);
NpgsqlDataReader reader = cmd.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)
我得到这个例外:
Npgsql.NpgsqlException: ERROR: 42703: column "%((E'My place'))%" does not exist
Run Code Online (Sandbox Code Playgroud)
我已经尝试不使用%运行查询,但它不起作用.我也试过使用下面给出的+和&,但是这也不起作用:
string query = "Select \"LocationName\" from \"Locations\" where \"LocationName\" LIKE '%'+ :loc_name +'%'";
Run Code Online (Sandbox Code Playgroud)
使用上面的行,我得到这个例外:
Npgsql.NpgsqlException: ERROR: 42725: operator is not unique: unknown + unknown
Run Code Online (Sandbox Code Playgroud) 有没有办法告诉Resharper方法应该有不同的命名约定,具体取决于访问修饰符,例如这里建议的?我的意思是例如:
私有方法lowerCamelCase
公共方法UpperCamelCase
等等...
我有一个庞大的LISP项目,我已经制作了一个prv文件,允许将VLIDE这个项目编译成一个vlx文件(它也编译fas文件).问题是无法从autocad外部或从命令提示符编译项目,因此我无法vlx使用脚本自动化构建.
问题是:有没有办法做到这一点?我可以fas-vlx从autocad外部编译吗?或者我可以启动autocad给出编译prv然后关闭autocad 的脚本吗?
我需要通过 C# 插件将外部 DWG 插入到 AutoCAD 绘图中。我需要向用户“询问”插入块的插入点和旋转。到目前为止,我一直使用一个 lisp 函数来调用命令“._-insert”,该函数会给出鼠标下的块的缩略图,允许用户单击绘图以设置插入点,并从该点开始用户再单击一次即可设置旋转。现在我想避免使用 Lisp 或使用 AutoCAD 的低级 API,因为我需要一个可以在各种 CAD 环境上运行的解决方案。我发现的是这样的:
public static void InsertDwg(string dwgName)
{
CADAPI.ApplicationServices.Document doc = CADAPI.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
CADDB.Database db = doc.Database;
CADAPI.EditorInput.Editor ed = doc.Editor;
CADDB.ObjectId ObjId;
using (CADDB.Transaction trx = db.TransactionManager.StartTransaction())
{
CADDB.BlockTable bt = db.BlockTableId.GetObject(CADDB.OpenMode.ForRead) as CADDB.BlockTable;
CADDB.BlockTableRecord btrMs = bt[CADDB.BlockTableRecord.ModelSpace].GetObject(CADDB.OpenMode.ForWrite) as CADDB.BlockTableRecord;
using (CADDB.Database dbInsert = new CADDB.Database(false, true))
{
dbInsert.ReadDwgFile(dwgName, CADDB.FileOpenMode.OpenForReadAndAllShare, true, string.Empty);
ObjId = db.Insert(Path.GetFileNameWithoutExtension(dwgName), dbInsert, true);
}
CADAPI.EditorInput.PromptPointOptions ppo = new CADAPI.EditorInput.PromptPointOptions("\nInsertion Point");
CADAPI.EditorInput.PromptAngleOptions ppa …Run Code Online (Sandbox Code Playgroud) 我正在使用Mono.Addins框架,C#和visual studio 2010编写一个可扩展的应用程序.
我的应用程序的结构如下:
PROJECT1:
namespace Plugins
{
[TypeExtensionPoint]
public interface IPlugin<InitParamsType>
{
void Refresh();
string PlugInName { get; }
void Initialize(InitParamsType parameters);
}
[TypeExtensionPoint]
public interface IOrganizerPlugin : IPlugin<string>
{
bool AllowsToEditBrandCode { get; }
UserControl GetUI();
}
public interface IPluginHost<PluginSpecalizedType>
{
void EmbedPlugin(PluginSpecalizedType plugin);
}
}
Run Code Online (Sandbox Code Playgroud)
项目2(参考项目1):
[assembly: AddinRoot("App.Organizer", "1.0")]
namespace App.Organizer
{
public partial class frm_Supplier_Managed : Form, IPluginHost<IOrganizerPlugin>
{
public frm_Supplier_Managed()
{
AddinManager.Initialize();
AddinManager.Registry.Update(null);
foreach (IOrganizerPlugin Addin in AddinManager.GetExtensionObjects(typeof(IOrganizerPlugin)))
{
EmbedPlugin(Addin);
}
}
public void EmbedPlugin(IOrganizerPlugin …Run Code Online (Sandbox Code Playgroud) 我正在尝试删除字符 '.' 来自除最后一次出现之外的字符串;例如字符串
12.34.56.78
Run Code Online (Sandbox Code Playgroud)
应该成为
123456.78
Run Code Online (Sandbox Code Playgroud)
我正在使用这个循环:
while (value != null && value.Count(c => c == '.') > 1)
{
value = value.Substring(0, value.IndexOf('.')) + value.Substring(value.IndexOf('.') + 1);
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更简洁的方法(也许使用 linq?)来做到这一点而无需显式循环?
(我知道有一个非常相似的问题,但是是关于 perl 的,事情完全不同)
我正在创建一个支持多语言操作系统的应用程序.在应用程序的一个地方,我使用以下代码行.
Type t = typeof(System.Windows.Forms.NotifyIcon);
BindingFlags hidden = BindingFlags.NonPublic | BindingFlags.Instance;
t.GetField("text", hidden).SetValue(notifyIcon, notificationToolTip);
Run Code Online (Sandbox Code Playgroud)
它是否可以在不同的语言操作系统上顺利运行,或者我必须更改不同语言的必填字段.例如,对于法语操作系统,我必须进行以下更改.
t.GetField("texte",hidden),SetValue(notifyIcon,notificationToopTip);
Run Code Online (Sandbox Code Playgroud) c# ×5
plugins ×3
.net ×2
autocad ×2
mono.addins ×2
add-in ×1
asp.net ×1
autolisp ×1
automation ×1
compilation ×1
field ×1
hotkeys ×1
insert ×1
java ×1
linq ×1
mef ×1
notifyicon ×1
npgsql ×1
opensaml ×1
optimization ×1
resharper ×1
saml ×1
saml-2.0 ×1
string ×1
thumbnails ×1