小编ygo*_*goe的帖子

无法解决的Git错误:以下未跟踪的工作树文件将被结帐覆盖

我在Visual Studio 2010中单独使用Git作为我的本地软件项目.最近我创建了一个新的分支来对其中一个对话窗口进行更大的重构.我做了以下修改:

  • 将Form1重命名为Form1a(包括所有依赖文件)
  • 添加新的Form1

我将这个更改检查到了分支,比如表单重构.有趣的是,Git并没有注意到我将文件Form1.cs重命名为Form1a.cs并创建了一个全新的,完全不同的Form1.cs,但它发现了一个新的Form1a.cs文件并发现了它之间的很多差异.以前和新的Form1.cs文件.这当然会导致完全无用的差异,但在这种情况下我不在乎,只要最终正确处理所有文件.

然后我切换回主人做了一些其他的小改动.没有任何冲突.到现在为止,一切正常.

今天,我想切换回我的分支表格 - 重构以继续这项工作.但我得到的是以下信息:

git.exe checkout    form-refactoring

Aborting
error: The following untracked working tree files would be overwritten by checkout:
Form1.Designer.cs
Please move or remove them before you can switch branches.
Run Code Online (Sandbox Code Playgroud)

应该是什么?提到的文件不是未跟踪的.既不在主分支中,也不在形式重构分支中.它是两个分支的一部分,但一个不是另一个分支的后代.如果我删除它会发生什么,它会好转吗?如果我现在删除了某些东西,我不相信Git会带回正确的文件.除了我提到的Git操作之外,我根本没有使用任何文件,那么我为什么要玩任何文件来继续使用Git操作呢?Git打破了它,Git现在应该处理它!

现在,我无法继续工作,因为我无法切换分支.有一个简单的解决方案吗?

Git版本是1.7.6,TortoiseGit是1.7.3.

git branch

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

从XML网络流中读取整个元素

我在C#.NET 4.0中编写网络服务器.有一个网络TCP/IP连接,我可以通过它连接完整的XML元素.他们定期到达,我需要立即处理它们.每个XML元素本身都是一个完整的XML文档,因此它有一个开放元素,几个子节点和一个结束元素.整个流没有单个根元素.所以当我打开连接时,我得到的是这样的:

<status>
    <x>123</x>
    <y>456</y>
</status>
Run Code Online (Sandbox Code Playgroud)

然后一段时间后它继续:

<status>
    <x>234</x>
    <y>567</y>
</status>
Run Code Online (Sandbox Code Playgroud)

等等.我需要一种方法来读取完整的XML字符串,直到状态元素完成.我不想用纯文本阅读方法这样做,因为我不知道数据的格式是什么.我无法等到整个流完成,正如其他地方经常描述的那样.我已经尝试使用XmlReader类,但它的文档很奇怪,方法无法解决,第一个元素丢失,在发送第二个元素后,发生XmlException,因为有两个根元素.

.net c# xml networking

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

Mono替代名为Mutex

在Windows/.NET上,可以使用命名的Mutex来同步多个进程.不幸的是,Mono并不完全支持Linux.他们的发行说明说Linux不支持这种Windows功能,并且模拟它是不可靠的.无论如何,最好避免建议的黑客攻击.

那么建议的替代品是什么?我需要让我的程序安全地同时运行,只需要将其中的一小部分与其他实例同步.

该应用程序最终需要部署在带有Mono 2.10的Ubuntu Linux上,但是对于测试,如果它也可以在带有.NET 4的Windows 7上运行,那将非常受欢迎.

c# linux mono synchronization

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

为用户(S4U)令牌创建服务

Windows 任务计划程序可以创建使用特定用户的帐户运行的任务,而无需存储用户密码。他们称之为“S4U”,即为用户服务。这应该类似于调度程序为当前用户创建这样的令牌,并可以使用它在该用户帐户下运行计划的进程。他们声称无法使用该系统访问网络或加密资源。调度程序本身使用 SYSTEM 帐户运行才能工作。这是一篇描述它的文章。其中的相关引用:

TASK_LOGON_S4U 是另一个提供更安全替代方案的选项。它利用用户 (S4U) 登录服务代表指定用户运行任务,但无需存储密码。由于任务计划程序在本地系统帐户内运行,因此它可以创建 S4U 登录会话并接收令牌,该令牌不仅可用于识别,还可用于在本地计算机上进行模拟。通常,S4U 令牌仅用于识别。

我需要在我的应用程序中使用此身份验证方案,但不能让任务计划程序执行此操作,而是需要自己执行此操作,因为我需要它用于任意数量的帐户。每当用户向我的应用程序注册任务时,任何后续任务都必须在同一用户下运行。但由于它们不能重叠,所以我需要自己进行序列化。

我找不到关于这个“S4U”的任何信息。我如何在我的应用程序中实现它?首选 C#,但 WINAPI 和 C 也可以。

更新:这是我尝试过的,但它不起作用。

// The WindowsIdentity(string) constructor uses the new
// Kerberos S4U extension to get a logon for the user
// without a password.
WindowsIdentity wi = new WindowsIdentity(identity);
WindowsImpersonationContext wic = null;
try
{
  wic = wi.Impersonate();
  // Code to access network resources goes here.
}
catch()
{
  // Ensure that an exception is not propagated higher in the call …
Run Code Online (Sandbox Code Playgroud)

windows security

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

自动更正.vs/config/applicationhost.config

Visual Studio 2015已将IIS Express配置文件从"我的文档"移动到其自己的隐藏.vs目录中,并告知IISExpress.exe使用该配置文件.

虽然当您有多个具有冲突配置的Web应用程序时,这可能听起来不错,但事实上,当您拥有自定义配置的Web应用程序时,情况并非如此.因为此配置文件位于临时目录中,当从源代码管理中检出代码到新位置时,或者在清理一般情况时,可以删除该目录.

Documents文件夹中的旧位置是一个中心位置,其中的文件通常不会被删除.如果我需要对此文件进行一些更改,比如允许应用程序使用Windows身份验证,我会编辑此文件一次,然后我就完成了.现在有了新位置,我可能需要多次进行这些更改.由于有两个配置文件(旧的位置对我来说仍然存在),它更令人困惑.

那么你不应该将.vs中的任何内容提交到版本控制中,因此甚至不可能与其他团队成员共享这些自定义.

建议的更新applicationhost.config文件的方法是什么,以便它提供Web应用程序所需的环境?是否有可以在前/后构建步骤中运行的工具?是否有可以从.vs合并到默认文件中的自定义XML文件?

是否可以从源代码管理中检出Web应用程序并让它在本地IIS Express中运行?或者在获取代码和web.config后是否总是需要手动更正?

PS:我忘记了一件事:<UseGlobalApplicationHostFile>项目文件中的元素可以设置为true,但是一旦我这样做,每次我想启动Web应用程序时都会收到拒绝访问错误消息.所以这似乎不太好用.

asp.net iis-express visual-studio-2015

6
推荐指数
0
解决办法
911
查看次数

发送IL代码以加载小数值

我有这样的代码来发出加载整数或字符串值的IL代码.但我不知道如何添加decimal类型.该方法不支持它Emit.对此有何解决方案?

ILGenerator ilGen = methodBuilder.GetILGenerator();
if (type == typeof(int))
{
    ilGen.Emit(OpCodes.Ldc_I4, Convert.ToInt32(value, CultureInfo.InvariantCulture));
}
else if (type == typeof(double))
{
    ilGen.Emit(OpCodes.Ldc_R8, Convert.ToDouble(value, CultureInfo.InvariantCulture));
}
else if (type == typeof(string))
{
    ilGen.Emit(OpCodes.Ldstr, Convert.ToString(value, CultureInfo.InvariantCulture));
}
Run Code Online (Sandbox Code Playgroud)

不工作:

else if (type == typeof(decimal))
{
    ilGen.Emit(OpCodes.Ld_???, Convert.ToDecimal(value, CultureInfo.InvariantCulture));
}
Run Code Online (Sandbox Code Playgroud)

编辑:好的,所以这就是我做的:

else if (type == typeof(decimal))
{
    decimal d = Convert.ToDecimal(value, CultureInfo.InvariantCulture);
    // Source: https://msdn.microsoft.com/en-us/library/bb1c1a6x.aspx
    var bits = decimal.GetBits(d);
    bool sign = (bits[3] & 0x80000000) != 0;
    byte scale = …
Run Code Online (Sandbox Code Playgroud)

.net c# il reflection.emit

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

Dialog有未经请求的额外空间

我设计了一个Windows窗体对话框,应该可以在其他应用程序,WPF和Windows窗体中重用.当我在Windows窗体应用程序中使用它时,这可以正常工作,但在WPF应用程序中调用时会导致一些布局问题.从屏幕上的像素,WinForms API所说的以及Spy ++中测量的尺寸和大小是不一致的.窗口宽10像素,在没有调试器的情况下运行比Spy ++说的更高,并且比我说它应该是.这有什么问题?我找不到任何东西,只是说它是一个严重破坏的.NET Framework.

这是Form类代码:

using System;
using System.Drawing;
using System.Windows.Forms;

namespace DialogTestApp
{
    internal class MyDialog : Form
    {
        public MyDialog()
        {
            Text = "Title";
            Width = 500;   // -> actually 510 (Spy++ says 500)
            Height = 300;   // -> actually 310 (Spy++ says 300)
            Font = SystemFonts.MessageBoxFont;
            FormBorderStyle = FormBorderStyle.FixedDialog;
            MaximizeBox = false;
            MinimizeBox = false;
            ShowInTaskbar = false;
            StartPosition = FormStartPosition.CenterScreen;

            TableLayoutPanel mainLayout = new TableLayoutPanel();
            mainLayout.BackColor = Color.FromArgb(255, 171, 255);   // pink
            mainLayout.Dock = DockStyle.Fill; …
Run Code Online (Sandbox Code Playgroud)

c# wpf winforms

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

从 Bash 脚本启动 systemctl,无需等待

我需要systemctl start myservice在 Bash 脚本接近结尾时调用,但我真的不关心它是否会成功或它何时返回。我只需要开始行动。监视该服务的状态是其他人的任务。我的脚本应该尽快返回,无论该服务是否已完成启动,我不依赖于此。

我的第一个想法是使用这样的东西:

# do other work
systemctl start myservice &
echo "done"
# end of script
Run Code Online (Sandbox Code Playgroud)

但我读到,这对于信号或在通常调用我的脚本的非交互式环境中是有问题的。所以我继续阅读并找到了该nohup命令,但这似乎会在任何地方写入输出文件,并且如果您不从 /dev/null 重定向标准输入,可能会挂起,他们说。

所以我仍然不知道如何正确地做到这一点。我愿意采用一种通用的方式来从 Bash 脚本启动并忘记任何进程,或者systemctl特别地,因为这将是我目前唯一的用例。

bash

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

那里有没有工作和完整的1-Wire .NET库?

我有一个1-Wire USB适配器(蓝色的那个),并希望从一个小型Linux机箱中使用它来监控温度.Linux盒子现在已经无序了,所以在此期间我想在我的Windows桌面上使用基于.NET的监控软件来记录温度.但似乎并没有一个可用的.NET .NET库.Maxim SDK附带的那个需要J#,我没有并且想要使用它.我甚至不确定我是否可以在基于.NET 4.0的应用程序中使用它,因为J#已经停止使用AFAIK.SourceForge(owdotnet)上的另一个"开源工作"是在2008年,看起来已经死了.甚至没有关于它的任何信息页面.Maxim的SDK还带有一个"紧凑型.NET"版本,至少可以找到连接到适配器的设备,但我需要实现整个1-Wire协议本人似乎(发送原始字节,等待一小会儿,那种东西).所以这对现在没什么帮助.谷歌没有找到任何其他东西.你呢?

我的印象是整个1-Wire的东西已经死了.它只能在Linux系统上使用(使用owfs,编译起来很庞大),整个产品生态系统并不完全活跃.还有哪些其他解决方案可以测量温度,环境参数(湿度,水,压力等)和状态(如打开的门),甚至可以切换不需要花钱的东西(打开和关闭灯)(和"家庭自动化"一样)?并且最好也可以从.NET代码访问?

.net windows 1wire

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

DbSet:缺少添加的项目

DbSet实体框架(6.1.3)的实体集合中,当我添加新项目时,之后不会从集合中返回它.这很奇怪也很意外.以下是一些收集的示例代码:

dbContext.Entities.ToArray();
// contains 3 entries
dbContext.Entities.Add(new Entity());
dbContext.Entities.ToArray();
// still contains 3 entries
Run Code Online (Sandbox Code Playgroud)

怎么会这样?当我dbContext.Entities在Visual Studio的即时窗口中查询时,它会显示"Local:Count = 4"之类的内容.为什么它会隐藏我的新物品?

更新:如果此集合没有做明显的事情 - 返回之前添加的内容 - 我需要做什么呢?它必须在首次调用时返回数据库中的所有记录,并且在以后调用时还必须包括所有更改(添加和删除).SaveChanges仅在用户完成编辑后调用.之前需要收藏!SaveChanges也可以在用户完成编辑之间的某处调用,但代码可能会返回,并且稍后会再次显示视图.

.net c# entity-framework

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