类库与控件类库的区别
参考: https://blog.youkuaiyun.com/superlight/article/details/4190377
可能大家并不知道,同样是类库,如标准类库,控件类库,调试时截然不同,如果你创建工程的时候选择是控件类库,那调试时会自动启动一个控件容器测试工具,给你测试使用,但标准类库里如果有控件,直接调试时,会报没有启动项目,无法调试的信息,这两种类库有什么区别呢,表面上看什么都没有,其实编译后也是一样的,究其根源,在于新建项目时的选择,那么答案就很简单了,秘密在项目文件里,经过对比,发现控件类库的项目文件多了
标准类库的项目文件里只要补上这么一句,就可以直接测试控件了恩,又补充发现了个问题,不是所有控件都能测试的,只有继承于UserControl的才可以
作者:Superlight
————————————————
版权声明:本文为优快云博主「superlight」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/superlight/article/details/4190377
vs2017 添加引用报错
以管理员身份运行 vs2017 命令行工具
定位到如下目录
执行如下命令, 然后重启vs即可
gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll
单元测试
安装插件
打开vs2017->工具->扩展与更新->联机 进行搜索Unit
创建一个.net项目
此处以wpf为例
添加一个xUnit项目
测试项目添加引用
运行测试类
在测试资源管理器
中单击 Output
可以看到控制台输出
sqlsugar + sqlite3
打开Nuget包管理器控制台
执行如下命令
Install-Package linq2db.SQLite
wpf项目和测试项目均需添加此依赖
- 表结构
sqlite> .schema databaseselectoritem
CREATE TABLE databaseselectoritem(
id INT,
name TEXT,
image TEXT
, remark TEXT(150));
sqlite>
- 实体类
using SqlSugar;
namespace database_manager
{
[SugarTable("databaseselectoritem")]
public class DatabaseSelectorItem
{
//通过特性设置主键和自增列
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
public string Name { get; set; }
public string Image { get; set; }
public string Remark { get; set; }
}
}
- sugar 类
using log4net;
using SqlSugar;
using System.Collections.Generic;
namespace database_manager
{
public class DatabaseSelectorItemDao
{
ILog log = LogManager.GetLogger(typeof(DatabaseSelectorItemDao));
private SqlSugarClient db;
public DatabaseSelectorItemDao()
{
db = new SqlSugarClient(new ConnectionConfig()
{
// 连接字符串
// // @"DataSource=" + "F:/sanren2016/database-manager/dox/db/app.db"
ConnectionString = @"DataSource=" + CommonConst.db_app,
DbType = DbType.Sqlite,
IsAutoCloseConnection = true,
// 从特性读取主键自增信息
InitKeyType = InitKeyType.Attribute
});
db.Aop.OnLogExecuting = (sql, pars) =>
{
log.Info(sql);
};
}
public IList<DatabaseSelectorItem> list()
{
return db.Queryable<DatabaseSelectorItem>().ToList();
}
public SqlSugarClient getDb()
{
return db;
}
}
}
使用文件对话框
添加引用
封装
/// <summary>
/// 选择目录
/// </summary>
/// <param name="title">标题</param>
/// <param name="selectedPath">从哪个目录开始选择</param>
/// <param name="okAction">确定动作</param>
/// <param name="cancelAction">取消动作</param>
public static void BrowserPath(string title, string selectedPath, Action<string> okAction, Action<string> cancelAction)
{
FolderBrowserDialog fbWnd = new FolderBrowserDialog();
// 目录对话框的描述字符串
fbWnd.Description = title;
// 自定义从哪个目录下面选择
fbWnd.SelectedPath = selectedPath;
// 是否显示目录对话框左下角的“新建文件夹”按钮, true:显示, false: 隐藏
fbWnd.ShowNewFolderButton = true;
// 目录选择完之后是点击确认还是点击取消, 确认: OK, 取消: Cancel
string strbtn = fbWnd.ShowDialog().ToString();
if (strbtn.CompareTo("OK") == 0)
{
okAction(fbWnd.SelectedPath);
}
if (strbtn.CompareTo("Cancel") == 0)
{
cancelAction(fbWnd.SelectedPath);
}
}
/// <summary>
/// 选择目录
/// </summary>
public static void BrowserPath(string title, string selectedPath, Action<string> okAction)
{
BrowserPath(title, selectedPath, okAction, (p) => { });
}
使用
private void click_browse_workspace_path(object sender, RoutedEventArgs e)
{
CommonUtil.BrowserPath("Select Workspace Dierectory", "", (p) =>
{
MessageBox.Show(p,"已选择目录");
});
}
.net config 读写config文件
https://www.cnblogs.com/fish-li/archive/2011/12/18/2292037.html