小编jay*_*ars的帖子

使用相同dll的2个不同版本?

我已经获得了2个预编译的dll:

Common.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f3b12eb6de839f43, processorArchitecture=MSIL

Common.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=f3b12eb6de839f43, processorArchitecture=MSIL
Run Code Online (Sandbox Code Playgroud)

API差异示例:

API

我正在尝试将两者加载到一个项目中,以执行以下操作:

extern alias v10;
extern alias v20;

private static void UpgradeUser()
{
    // Load old user
    var userOld = new v10::Common.Data.UserData();
    userOld.loadData("user.dat");

    // Create new user
    var userNew = new v20::Common.Data.UserData();

    // Copy properties  
    userNew.FirstName = userOld._firstName;
    userNew.LastName = userOld._lastName;
    userNew.Age = userOld._age;

    // Invoke method from v10 and v20 API
    userOld.version();
    userNew.DisplayVersion();

    if (userNew.GetUserInfo() != userOld.getInfo())
    {
        throw new Exception("Discrepencies in upgrade ");
    }

    Console.WriteLine("Upgrade done!");
} …
Run Code Online (Sandbox Code Playgroud)

.net c# versioning visual-studio-2015

21
推荐指数
1
解决办法
2万
查看次数

一段时间后,RelayCommand停止工作

我使用GalaSoft的RelayCommand遇到了一些问题.

我有一个可以工作的NextCommand属性,但只有几次.

之后,它完全停止工作.

您可以使用示例项目尝试此操作:

http://s000.tinyupload.com/?file_id=65828891881629261404

行为如下:

  1. NextCommand:
    1. 弹出所有项目直到活动索引
    2. 如果剩下少于50个项目,则推送1个新项目
    3. 将新项目标记为活动
  2. BackCommand:
    1. 将活动索引向后移动1个位置

复制步骤:

  1. '+'(OemPlus)键已绑定到NextCommand
  2. ' - '(OemMinus)键已绑定到BackCommand
  3. 按住"+"键直到列表停止增长(限制50个项目)
  4. 按住" - "键,直到列表中的第一项处于活动状态
  5. 重复

所需的重复次数(复制错误)是不一致的.

有时我会在重复4次后得到它; 其他时间到9.

在此输入图像描述

// Items Collection
public class ItemCollection : ViewModelBase
{
    // List of Items
    private readonly ObservableCollection<Item> _items = new ObservableCollection<Item>();
    public ObservableCollection<Item> Items
    {
        get { return _items; }
    }

    // Constructor
    public ItemCollection()
    {
        BackCommand = new RelayCommand(
                () =>
                {
                    // Go to previous page
                    var index = Items.IndexOf(ActiveItem); …
Run Code Online (Sandbox Code Playgroud)

c# wpf relaycommand mvvm-light

10
推荐指数
1
解决办法
410
查看次数

在StackPanel中提高巨大ListBox的性能?

我使用StackPanel垂直布局几个控件(即标题,子标题,列表框,分隔符,列表框等).

StackPanel是ScrollViewer的子代,以确保其内容始终可滚动.

StackPanel中的一个控件是ListBox.

其ItemsSource是绑定到大型集合的数据,复杂的DataTemplate用于实现每个项目.

不幸的是,我的性能(高CPU /内存)非常糟糕.

我试过了

  • 将ListBox的ItemsPanel设置为VirtualizingStackPanel,和
  • 将ControlTemplate重写为ItemsPresenter(删除ListBox的ScrollViewer).

但是表演没有区别.我猜测StackPanel在测量期间给它的内部儿童无限高度?

当我用其他面板/布局(例如,Grid,DockPanel)替换ScrollViewer和StackPanel并且性能显着提高时,这让我相信瓶颈和解决方案都在虚拟化中.

有什么方法可以改善这个视图的CPU /内存性能吗?

在此输入图像描述

[更新1]

原始示例项目:http://s000.tinyupload.com/index.php?file_id = 29810707815310047536

[更新2]

我尝试重新设置/模板化TreeView/TreeViewItems来提供以下示例.它仍然需要很长时间才能启动/使用相同的高内存.但是一旦加载,滚动感觉比原始样本响应更快.

想知道是否还有其他方法可以进一步改善启动时间/内存使用情况?

重新设计的TreeView项目:http://s000.tinyupload.com/index.php?file_id = 00117351345725628185

[更新2]

pushpraj的解决方案就像一个魅力

  • 原版的:
    • 初创公司:35s,
    • 内存:393MB
    • 滚动:慢
  • 树视图:
    • 初创公司:18s,
    • 内存377MB,
    • 滚动:快速
  • pushpraj的解决方案:
    • 启动:<1s,
    • 内存:20MB,
    • 滚动:快速

wpf listbox ui-virtualization virtualizingstackpanel

6
推荐指数
1
解决办法
5470
查看次数

如何链接Gulp:使用源映射链接到Babel到Webpack?

我正在尝试创建一个转换的gulp任务

TS -> (ES6) -> Babel -> (ES5) -> Webpack -> [bundle.js, bundle.js.map]

源映射映射回原始TS代码的位置.

如何用gulp做到这一点?

到目前为止,我已经设法让它发挥作用 TS -> ES6 -> Babel -> ES5

// Build
gulp.task("build", ["clean"], () => {

    const tsProject = ts.createProject("tsconfig.json", {});
    const sourceMapOptions = {
        sourceRoot: __dirname+"/src"
    };

    return tsProject.src()
    .pipe(sourcemaps.init())

        // Typescript
        .pipe(tsProject())
        .js

        // Babel
        .pipe(babel({
            presets: ["es2015"],
            plugins: ["transform-runtime"]
        }))

        // Webpack <-- ????
        .pipe(webpack({})) // <-- ????

    .pipe(sourcemaps.write(".", sourceMapOptions))
    .pipe(gulp.dest("./dist"));

});
Run Code Online (Sandbox Code Playgroud)

但不知道如何添加webpack到混合.

source-maps gulp webpack gulp-typescript gulp-babel

2
推荐指数
1
解决办法
849
查看次数