我已经获得了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差异示例:
我正在尝试将两者加载到一个项目中,以执行以下操作:
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) 我使用GalaSoft的RelayCommand遇到了一些问题.
我有一个可以工作的NextCommand属性,但只有几次.
之后,它完全停止工作.
您可以使用示例项目尝试此操作:
http://s000.tinyupload.com/?file_id=65828891881629261404
行为如下:
复制步骤:
所需的重复次数(复制错误)是不一致的.
有时我会在重复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) 我使用StackPanel垂直布局几个控件(即标题,子标题,列表框,分隔符,列表框等).
StackPanel是ScrollViewer的子代,以确保其内容始终可滚动.
StackPanel中的一个控件是ListBox.
其ItemsSource是绑定到大型集合的数据,复杂的DataTemplate用于实现每个项目.
不幸的是,我的性能(高CPU /内存)非常糟糕.
我试过了
但是表演没有区别.我猜测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的解决方案就像一个魅力
我正在尝试创建一个转换的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到混合.
c# ×2
wpf ×2
.net ×1
gulp ×1
gulp-babel ×1
listbox ×1
mvvm-light ×1
relaycommand ×1
source-maps ×1
versioning ×1
webpack ×1