小编Her*_*r33的帖子

使用Sql Spatial Data(C#)查找不规则多边形的"可视"中心

我在Bing Maps WPF控件上绘制区域(使用SqlGeometry/ SqlGeography并将它们转换为WPF LocationCollection等效项)并需要标记它们.我得到了区域上绘制的标签,并将它们附加到找到的点上STCentroid().当然,正如您所想象的那样,"U"或"C"形区域存在问题,其中质心最终位于区域之外,这使得标签不正确.

有没有办法使用SqlGeometry/ SqlGeography找到"视觉"中心或者找到最适合形状并使用该中心的圆圈?我尝试了各种方法,STPointOnSurface()但似乎STPointOnSurface()总是在边缘上选择一个点,就像DCREHA一样(底部深绿色区域的标签总是在边缘上:

在此输入图像描述

.net c# sql-server polygon bing-maps

13
推荐指数
1
解决办法
1403
查看次数

将自定义类的集合添加到Settings.Settings

我一直在努力将自定义类的自定义集合添加到我的winforms项目的应用程序设置中,我觉得我已经尝试了六种不同的方式,包括这种方式,这种方式,这种方式,这种方式但似乎没有任何工作......

目前代码符合,并且运行正常 - 任何地方都没有例外.编写他的保存功能,但在设置xml文件中没有创建条目(我有一些其他设置,它适用于所有这些,但这一个FYI).当它加载时,Properties.Settings.Default.LastSearches总是为空......有什么想法吗?

继承我目前的代码:

课程:

[Serializable]
public class LastSearch : ISerializable
{
    public DateTime Date { get; set; }
    public string Hour { get; set; }
    public string Log { get; set; }
    public string Command { get; set; }
    public List<string> SelectedFilters { get; set; }
    public List<string> SearchTerms { get; set; }
    public List<string> HighlightedTerms { get; set; }
    public List<string> ExcludedTerms { get; set; }

    public …
Run Code Online (Sandbox Code Playgroud)

c# settings serialization .net-4.0 winforms

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

使用配置转换,使用MSI部署的桌面应用程序在VSTS上构建/发布流程

我们正在为客户端部署的桌面应用程序(winforms)实施DevOps策略.到目前为止,我们使用SlowCheetah进行配置转换(例如:从配置管理器中选择QA,自动交换app.QA.config,进行构建,使用SCCM将MSI部署到QA机器).

我们正在尝试利用Azure DevOps来自动执行此过程,但我遇到了障碍.我想做1个版本,以及Dev - > QA - > UA - > Prod的发布管道,但由于配置转换仅在构建上运行,我不知道该怎么做.

MSI只会为当前选定的配置生成,因此释放步骤中的下降只有1个MSI(配置已经打包,无法更改).

我知道构建步骤构建解决方案4次(每个配置一个)将起作用 - drop将包含所有4个MSI,但这看起来很愚蠢.

我不能只在发布管道上构建安装项目,因为Drop中只有DLL可用,而不是项目文件.我怎么能做到这一点?

谢谢!

c# windows-installer app-config desktop-application azure-devops

8
推荐指数
1
解决办法
884
查看次数

使用Visual Studio 2015先决条件安装无法抑制SQL Server 2012 Express EULA(尽管使用/ IAcceptSqlServerLicenseTerms)

我在.NET Studio窗体项目的Visual Studio 2015中有一个安装项目,它需要SQL Server 2012 Express作为先决条件.我已经成功创建了一个bootstrapper(位于其中C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages\SqlExpress2012)并添加了以下命令以使其保持静默:

/q /action=Install /features=SQL,AS,RS,IS,Tools 
/instancename=SQLExpress /sqlsvcaccount="NT AUTHORITY\Network Service" 
/sqlsysadminaccounts="BUILTIN\Users" 
/agtsvcaccount="NT AUTHORITY\Network Service" 
/IAcceptSqlServerLicenseTerms /skiprules=RebootRequiredCheck`
Run Code Online (Sandbox Code Playgroud)

尽管如此,我仍然可以获得EULA弹出窗口/IAcceptSqlServerLicenseTerms.

install.log表明该命令确实正在应用(事实上它确实安装了,就在我必须点击EULA之后).是什么赋予了?我很困惑它如何获取命令的所有其余部分但忽略了/IAcceptSqlServerLicenseTerms.

我唯一的理论是它首先调用SqlExpressChk.exe以确定是否安装x32或x64位版本,并且EULA附加到该版本.有什么想法吗?

这是install.log行,表明我的命令确实正在应用:

Installing using command 'C:\Users\ljhersma\AppData\Local\Temp\VSD11B8.tmp\SqlExpress2012\SQLEXPR_x64_ENU.EXE' and parameters '/qs /action=Install /features=SQL,AS,RS,IS,Tools /instancename=SQLExpress /sqlsvcaccount="NT AUTHORITY\Network Service" /sqlsysadminaccounts="BUILTIN\Users" /agtsvcaccount="NT AUTHORITY\Network Service" /ENABLERANU /IAcceptSqlServerLicenseTerms /skiprules=RebootRequiredCheck'
Run Code Online (Sandbox Code Playgroud)

deployment installer bootstrapper sql-server-express visual-studio

7
推荐指数
0
解决办法
168
查看次数

由于证书无效,无法安装Microsoft Visual Studio 2017安装程序项目

我一直试图为VS 2017 Professional 安装Microsoft Visual Studio 2017安装程序项目一段时间后没有成功.首先,我尝试了VS2017中的Extensions and Updates向导.它正确下载,但当我关闭VS以启动安装时,如果立即失败,请执行以下操作:

VSIX错误

然后我从Visual Studio Marketplace中抓取了VSIX并尝试通过以下命令行安装它:

VSIXInstaller InstallerProjects.vsix

这似乎让我更进一步,但也让我知道证书是问题.不是这样说的Digital Signature: Invalid Certificate:

数字签名:无效证书

单击以继续安装后,它会失败并允许我查看日志:

VSIX命令行安装失败

日志似乎在这里回应证书问题:

10/17/2017 1:11:21 PM - Signature Details...
10/17/2017 1:11:21 PM -     Extension is signed with an invalid certificate
10/17/2017 1:11:21 PM -         (PartialChain)      : A certificate chain could not be built to a trusted root authority.
10/17/2017 1:11:21 PM -         (RevocationStatusUnknown): The revocation function was unable to check revocation for the certificate.
10/17/2017 1:11:21 PM -         (OfflineRevocation) …
Run Code Online (Sandbox Code Playgroud)

visual-studio visual-studio-2017

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

VSTS在线建筑安装项目?

我有一个带有安装项目的.NET Console应用程序,我试图移植到VSTS Online(visualstudio.com),以利用源代码控制并添加自动构建/部署。

我已经上传了很好的代码,并且它的构建很棒,但是正在努力使其生成MSI。我已经尝试在解决方案构建后引入命令行任务来运行devenv.com,但我无法完全正常工作。关于获取设置项目以构建其MSI的任何想法?

谢谢!

编辑:

这是我尝试的命令行任务:

Tool: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv
Arguments: SolutionName.sln /Build $(BuildConfiguration) /Project Setup\Setup.vdproj
Run Code Online (Sandbox Code Playgroud)

编辑2:

新命令行:

Tool: C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.com
Arguments: MySolution.sln /Build $(BuildConfiguration) /Project Setup\Setup.vdproj
Run Code Online (Sandbox Code Playgroud)

日志:

2017-10-04T17:58:48.7033117Z ##[command]"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.com" MySolution.sln /Build release /Project Setup\Setup.vdproj
2017-10-04T17:59:12.1156461Z microsoft.visualstudio.telemetry.dll
2017-10-04T17:59:12.1196471Z microsoft.visualstudio.telemetry.dll
2017-10-04T17:59:12.1196471Z microsoft.visualstudio.telemetry.dll
2017-10-04T17:59:12.1196471Z microsoft.visualstudio.telemetry.dll
2017-10-04T17:59:12.1206475Z microsoft.visualstudio.telemetry.dll
2017-10-04T17:59:12.1206475Z microsoft.visualstudio.telemetry.dll
2017-10-04T17:59:12.1206475Z microsoft.visualstudio.extensionmanager.implementation.dll
2017-10-04T17:59:46.2231714Z 
2017-10-04T17:59:46.2231714Z Microsoft Visual Studio 2017 Version 15.0.26730.3.
2017-10-04T17:59:46.2231714Z Copyright (C) Microsoft Corp. All rights reserved.
2017-10-04T17:59:46.2231714Z 
2017-10-04T17:59:46.2231714Z Some errors …
Run Code Online (Sandbox Code Playgroud)

c# console-application setup-project azure-devops

6
推荐指数
2
解决办法
2994
查看次数

Serilog Elasticsearch 日志未将其发送到服务器(但正确缓冲)

我在 Windows IIS Web 服务器上本地托管了一个 ELK 堆栈 (v7.0),并且日志没有发送到服务器。服务器正在运行,我可以访问保留的 URL 并取回通用 json 包,说 Elasticsearch 正在运行,我可以很好地登录 Kibana,只是没有日志可以查看。

我在正在记录的应用程序中设置了一个 bufferBaseFilename,当我去那个位置时,日志实际上就在那里,正确索引等等。我想知道为什么它永远不会同步回服务器?这似乎是一个连接问题,但所有网络内容都检查出来了。我可能错过了一些简单的东西。有什么想法吗?如果您需要更多信息,请与我们联系!

.net logging elasticsearch kibana serilog

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

用于将时间戳与当前时间进行比较的Unix脚本

这是我进入Unix脚本领域的第一次旅程,我不知道如何解决这个问题.我要查询数据库并提取时间戳.我需要做的是采用时间戳(以令人敬畏的格式YYYYMMDDHHMMSS),如果超过10分钟,则返回1,否则返回0.

同样,我对这种类型的脚本基本上没有经验(背景是在C++和C#中)所以如果你们不介意多一点解释我会很感激 - 我想知道它是如何工作的.

谢谢!

unix shell unix-timestamp

4
推荐指数
2
解决办法
3万
查看次数

获取另一个线程上的RichTextBox中的文本

我需要在另一个线程中获取RichTextBox中的文本.我尝试这样调用:

string text = ResultsRTB.Invoke((MethodInvoker)(() => ResultsRTB.Text));
Run Code Online (Sandbox Code Playgroud)

但是,由于您无法使用MethodInvoker返回任何内容(我知道),这显然无效.我也尝试过这里这里的建议的变化,没有运气.我觉得这是一个简单的方法,但我只是缺少一件小事.谢谢!

c# .net-4.0 winforms

4
推荐指数
1
解决办法
4028
查看次数

通过网络读取文件非常慢

我在读取网络驱动器上的大文件(~400 mb)时遇到一个有趣的问题。最初,我将完整的网络地址输入 FileInfo 中,并使用 CopyTo 函数将其传输到本地临时驱动器,然后读取它。这似乎工作正常,它不慢但也不快 - 只是嗯。CopyTo功能将使运行该程序的计算机的网络利用率始终保持在50%以上,这已经相当不错了。

为了加快这个过程,我尝试将网络文件直接读入内存流,以消除中间人。当我尝试这个(使用此处描述的异步复制模式)时,速度非常慢。我的网络利用率从未超过 2% - 几乎就像有什么东西在限制我。仅供参考,我在通过 Windows 资源管理器直接复制同一文件时观察了我的网络利用率,它达到了 80-90%...不知道这里发生了什么。下面是我使用的异步复制代码:

string line;
List<string> results = new List<string>();

Parser parser = new Parser(QuerySettings.SelectedFilters, QuerySettings.SearchTerms,
QuerySettings.ExcludedTerms, QuerySettings.HighlightedTerms);

byte[] ActiveBuffer = new byte[60 * 1024];
byte[] BackBuffer = new byte[60 * 1024];
byte[] WriteBuffer = new byte[60 * 1024];

MemoryStream memStream = new MemoryStream();
FileStream fileStream = new FileStream(fullPath, FileMode.Open, FileSystemRights.Read, FileShare.None, 60 * 1024, FileOptions.SequentialScan);

int Readed = 0;
IAsyncResult ReadResult;
IAsyncResult WriteResult;

ReadResult = …
Run Code Online (Sandbox Code Playgroud)

.net c# file-io network-programming winforms

3
推荐指数
1
解决办法
5496
查看次数

如果ls -lrt返回最后修改年份,为什么它看起来完全随机?

以下是unix中ls -lrt命令的结果:

-rw-r--r--   1 blah      blah          846       Apr 18  2013 filetype1.log
-rw-r--r--   1 blah      blah          290338533 Jan  3 00:59 filetype2.log
Run Code Online (Sandbox Code Playgroud)

为什么一个人方便地返回年份而另一个只有月,日和时间戳?我怎么能一年到头?

编辑:这是一个例子,其中最后一次编辑时间不在当前年份内且仍然没有年份:

-rw-r--r--   1 blah      blah       689466 Dec 31 23:59 filetype2.log
-rw-r--r--   1 blah      blah       689591 Jan  1 00:59 filetype2.log
Run Code Online (Sandbox Code Playgroud)

unix ls

3
推荐指数
1
解决办法
2562
查看次数

.Net正则表达式性能问题

我有一些输出到RichTextBox(可能很多或很少,它的搜索结果),并希望应用一些自定义颜色编码.决定使用正则表达式,当它工作时,它似乎相当缓慢(约20秒)300结果.

输出始终采用相同的格式:

Attribute1=Value1 Attribute2=(Value2) Attribute3="String value 3" Attribute4=
Run Code Online (Sandbox Code Playgroud)

等等.所以,我有4个案例:stuff = stuff,stuff =(stuff)stuff ="string of stuff"和stuff =

以下正则表达式工作正常(匹配它应该的一切),但速度很慢:

(\S+)=("(?:[^"]|(?<open>")|(?<-open>"))+(?(open)(?!))")|(\S+)=(\((?:[^()]|(?<open>\()|(?<-open>\)))+(?(open)(?!))\))|(\S+)=(\S+)|(\S+)=\s
Run Code Online (Sandbox Code Playgroud)

你们看到什么特别的东西会减慢它的速度吗?我相信你可以说,第一部分与引号相匹配,第二部分与括号相匹配,等等.

更新 只是开玩笑,并不能完全归还我想要的......这个:

Attribute1=Value1 Attribute2=(Value2) Attribute3="String value 3" Attribute4= Attribute5="Another string"
Run Code Online (Sandbox Code Playgroud)

返回:

5: Attribute1
6: Value1
3: Attribute2
4: (Value2)
1: Attribute3
2: "String value 3" Attribute4= Attribute5="Another string"
Run Code Online (Sandbox Code Playgroud)

看起来引号一直匹配到第二个字符串,而不是单独考虑它们.

.net c# regex

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

Parallel.ForEach 和 Regex 没有提高性能吗?

我有一个程序,它根据结果以某种方式对返回的结果集进行颜色编码。由于对结果进行颜色编码所需的时间较长(目前使用 Regex 和 RichTextBox.Select + .SelectionColor 完成),我在 400 个结果处切断了颜色编码。在这个数字左右,大约需要 20 秒,这大约是我认为合理的最长时间。

为了尝试提高性能,我重写了 Regex 部分以使用循环Parallel.ForEach来迭代MatchCollection,但时间大致相同(18-19 秒 vs 20 秒)!难道这个工作不太适合并行编程吗?我应该尝试一些不同的东西吗?欢迎任何建议。谢谢!

PS:我觉得有点奇怪,无论有没有 Parallel.ForEach,我的 CPU 利用率都没有达到 14% 左右。

代码

MatchCollection startMatches = Regex.Matches(tempRTB.Text, startPattern);

object locker = new object();
System.Threading.Tasks.Parallel.ForEach(startMatches.Cast<Match>(), m =>
{
    int i = 0;
    foreach (Group g in m.Groups)
    {
        if (i > 0 && i < 5 && g.Length > 0)
        {
            tempRTB.Invoke(new Func<bool>(
                delegate
                {
                    lock (locker)
                    {
                        tempRTB.Select(g.Index, g.Length);
                        if ((i & 1) == …
Run Code Online (Sandbox Code Playgroud)

c# regex parallel-processing multithreading .net-4.0

0
推荐指数
1
解决办法
1527
查看次数