小编And*_*ens的帖子

带有intellisense的内置C#/ VB.Net编辑器--Roslyn,VSTA还是其他什么?

我需要在我的应用程序中提供脚本功能,允许客户使用我们的对象模型扩展其功能.我希望提供一些带有intellisense的集成C#/ VB.Net编辑器,但在查看AvalonEdit和ScintillaNet等产品后,它们似乎没有提供真正的代码完成,只是一个API,您可以在其中提供自己的列表弹出自动完成列表中显示的项目.

因此我想知道罗斯琳是否提供了这样的功能?从我遇到的教程和示例中可以看出,Roslyn实际上只是一个编译器服务.

作为最后的手段,客户可以使用像VS Express这样的东西,但集成的编辑器显然更好一些.

(我也遇到了Visual Studio Tools for Applications,听起来很有希望;但是在线资源已有几年历史了,而且文档/教程不存在,所以我用这个来填空.)

c# vb.net vsta roslyn

7
推荐指数
1
解决办法
2763
查看次数

WPF在每个用户控件中合并了资源字典 - 坏主意?

我将应用程序的资源保存在一个单独的DLL中,并在App.xaml中使用类似的东西在我的主EXE中引用它们: -

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="pack://application:,,,/MyThemesAssembly;component/Themes/Generic.xaml"/>
</ResourceDictionary.MergedDictionaries>
Run Code Online (Sandbox Code Playgroud)

当我编辑主EXE项目中的窗口时,VS2010设计器无法识别来自其​​他程序集的任何资源,因此我没有看到任何样式应用(不是真正的问题,因为我总是在XAML视图中工作).但是,Resharper也无法识别这些外部资源名称,因此在编辑XAML时会导致资源名称下出现大量波形.

我发现我可以通过在每个窗口和用户控件中包含上面的XAML来修复VS设计器和Resharper,但是这会对内存和/或性能产生负面影响吗?每个窗口都会获得单独的资源副本吗?

wpf resharper

7
推荐指数
1
解决办法
3298
查看次数

奇怪的问题 - 弹出窗口中的鼠标点击被下面的控件捕获

我正在显示一个Popup响应按钮单击(popup.IsOpen = true;).弹出窗口包含一个ComboBox,当我单击组合框中的一个项目时,SelectionChanged事件所做的一件事就是隐藏弹出窗口.

弹出窗口出现DataGrid在我的页面上,我发现组合框上的鼠标点击也被我在DataGrid上获得的MouseUp事件所拾取.知道发生了什么事吗?

wpf

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

实体框架 - "Attach()"很慢

我正在使用EF5并将POCO实体的断开连接图附加到我的上下文中,如下所示: -

using (var context = new MyEntities())
{
    context.Configuration.AutoDetectChangesEnabled = false;

    context.MyEntities.Attach(myEntity);

    // Code to walk the entity graph and set each entity's state
    // using ObjectStateManager omitted for clarity ..

    context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

实体"myEntity"是一个实体的大图,有许多子集合,而这些子集合又有自己的子集合,依此类推.整个图形包含10000个实体的顺序,但通常只更改一小部分.

设置实体状态和实际的代码SaveChanges()相当快(<200ms).这就是Attach()问题,需要2.5秒,所以我想知道这是否可以改进.我已经看到了一些文章,告诉你设置AutoDetectChangesEnabled = false,我正在上面做,但它在我的场景中没有任何区别.为什么是这样?

entity-framework

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

GZipStream压缩不起作用

我正在尝试读取文件并使用GZipStream对其进行压缩,如下所示:

using (var outStream = new MemoryStream())
{
    using (var fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read))
    {
        using (var gzipStream = new GZipStream(outStream, CompressionMode.Compress))
        {
            fileStream.CopyTo(gzipStream);

            Debug.WriteLine(
                "Compressed from {0} to {1} bytes", 
                fileStream.Length, 
                outStream.Length);

            // "outStream" is utilised here (persisted to a NoSql database).
        }
    }
} 
Run Code Online (Sandbox Code Playgroud)

问题是outStream.Length始终显示10个字节.我究竟做错了什么?

我试过在线gzipStream.Close()后调用fileStream.CopyTo(正如其他论坛中所建议的那样),但这似乎也关闭outStream了,所以后续使用它的代码也会失败.

c# gzipstream

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

我可以使用流解压缩和反序列化文件吗?

我的应用程序使用Json.Net序列化对象,压缩生成的JSON,然后将其保存到文件中.此外,应用程序可以从其中一个文件加载对象.由于现有代码创建大字符串和字节数组的方式,这些对象的大小可能是几十Mb,我担心内存使用情况: -

public void Save(MyClass myObject, string filename)
{
    var json = JsonConvert.SerializeObject(myObject);
    var bytes = Compress(json);
    File.WriteAllBytes(filename, bytes);
}

public MyClass Load(string filename)
{    
    var bytes = File.ReadAllBytes(filename);
    var json = Decompress(bytes);
    var myObject = JsonConvert.DeserializeObject<MyClass>(json);
}

private static byte[] Compress(string s)
{
    var bytes = Encoding.Unicode.GetBytes(s);

    using (var ms = new MemoryStream())
    {
        using (var gs = new GZipStream(ms, CompressionMode.Compress))
        {
            gs.Write(bytes, 0, bytes.Length);
            gs.Close();
            return ms.ToArray();
        }
    }
}

private static string Decompress(byte[] bytes)
{
    using (var …
Run Code Online (Sandbox Code Playgroud)

c# stream json.net gzipstream

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

如何从Prism事件聚合器订户内调用异步方法?

快速问题-如何在Prism事件聚合器订阅者操作​​中调用异步方法?例如

_eventAggregator.GetEvent<PubSubEvent<SomeMessage>>()
   .Subscribe((msg) => {
                       DoSomething();
                       await DoSomethingAsync();
                       DoSomethingElse();
                    });
Run Code Online (Sandbox Code Playgroud)

c# asynchronous prism

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

我可以将现有的 NuGet 包上传到 Azure DevOps 工件源吗?

我目前正在从 TFS 2012 迁移到 Azure DevOps 2019(均为内部部署)。使用旧服务器,我将从我们的一些构建中手动创建 NuGet 包,并将这些.nupkg文件托管在文件共享上(在 Visual Studio 中配置为包源)。使用 DevOps,我显然可以自动化所有这些并将包直接推送到工件提要中。

旧服务器需要退役,所以我想将现有的 .nupkg 文件从文件共享中移到新的工件提要中。这可能吗?

nuget azure-devops azure-artifacts azure-devops-server-2019

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

如何将整个映射设置为只在NHibernate 3.2中按代码映射?

我刚刚开始使用NHibernate 3.2及其"按代码映射"功能,并将我们的Fluent映射迁移到它.是否有一个流利的"ReadOnly();" 功能,使整个映射只读?提前致谢.

nhibernate-mapping

5
推荐指数
2
解决办法
3774
查看次数

ItemTemplate 和 ItemContainerStyle 不能一起使用吗?

我正在尝试将 ItemTemplate 和 ItemContainerStyle 应用于 ItemsControl:-

<ItemsControl ItemsSource="{Binding LogEntries}"
              ItemTemplate="{StaticResource itemTemplate}"
              ItemContainerStyle="{StaticResource itemContainer}" />
Run Code Online (Sandbox Code Playgroud)

然而 ItemContainerStyle 似乎被忽略了(但如果我删除了 ItemTemplate 它确实有效)。

项目模板相当复杂,用于许多不同的视图。在一个特定视图中,我需要更改列表项的间距和背景颜色,因此我还尝试应用 ItemContainerStyle,如下所示:-

<Style x:Key="itemContainer"
       TargetType="ContentPresenter">
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <Border x:Name="itemBorder"
                        Margin="4,0,4,4"
                        Background="#666666">
                    <ContentPresenter Content="{Binding}" />
                </Border>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

我有点惊讶你不能同时申请,除非我遗漏了什么?我认为 ItemContainerStyle 实际上只是项目内容的“包装器”,无论项目的内容是否模板化?

wpf

5
推荐指数
1
解决办法
3357
查看次数