我有一个.Net应用程序,它接受一堆命令行参数,处理其中一些,并将其余部分用作另一个应用程序的参数
例如
MyApp.exe foo1 App2.exe arg1 arg2 ...
Run Code Online (Sandbox Code Playgroud)
MyApp.exe是我的应用程序,
foo1是我的应用程序关心的参数.App2.exe是另一个应用程序,我的应用程序将运行带有arg1 arg2等的App2作为参数.
目前我的应用程序只是使用这样的东西运行App2.exe
Process.Start(args[1], String.Join(" ", args.Skip(2)).因此上面的命令将正确运行:带有参数"arg1 arg2"的App2.exe.但是,请考虑这样的事情
MyApp.exe foo1 notepad.exe "C:\Program Files\readme.txt"
Run Code Online (Sandbox Code Playgroud)
上面的代码不会知道引号,并将使用参数C:\ Program Files\readme.txt(不带引号)运行notepad.exe.我该如何解决这个问题?
.net c# processstartinfo console-application command-line-arguments
我在掌握时写了一些代码,并意识到我正在做一些我不想放入大师的实验.阅读本文档,似乎我应该这样做
git checkout -b experiment
Run Code Online (Sandbox Code Playgroud)
在我开始编写代码之前.我现在该怎么办?我担心如果我执行上面的命令,会发生什么
experiment将创建一个分支(从主服务器复制)如何在不影响主人的情况下将我当前的工作提交给新分支?
我注意到当你输入 ctor 然后点击Tab按钮时,VS 会自动为你创建一个构造函数框架。
我还在截屏视频中看到,演讲者可以生成除其他外的 : Console.WriteLine,以及使用键盘快捷键的所有界面方法的骨架方法。
但是,我无法得到他输入的关键字。
这个功能叫什么?我在哪里可以看到关键字列表和效果?
例如:
if(cond1)
if(cond2) DoCond2();
else DoCond3();
Run Code Online (Sandbox Code Playgroud)
该else语句是否将被视为第一个if或第二个的其他语句if?为什么?(是否从语法角度进行解释?)答案在其他基于C的编程语言(例如C和Java)中是否也相同?
注意:这不是作业。我可以很容易地对其进行测试,如果我不喜欢默认行为,可以使用大括号,但是我对此感到好奇。
编辑们,显然在原始示例中有一个非常严重的错误。请再检查一次。我知道,这很尴尬。抱歉。
我正在尝试创建一个工具来以编程方式修改我的服务的app.config文件.代码是这样的,
string _configurationPath = @"D:\MyService.exe.config";
ExeConfigurationFileMap executionFileMap = new ExeConfigurationFileMap();
executionFileMap.ExeConfigFilename = _configurationPath;
System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(executionFileMap, ConfigurationUserLevel.None);
ServiceModelSectionGroup serviceModeGroup = ServiceModelSectionGroup.GetSectionGroup(config);
foreach (ChannelEndpointElement endpoint in serviceModeGroup.Client.Endpoints)
{
if (endpoint.Name == "WSHttpBinding_IMyService")
{
endpoint.Address = new Uri("http://localhost:8080/");
}
}
config.SaveAs(@"D:\MyService.exe.config");
Run Code Online (Sandbox Code Playgroud)
但是我在更改端点的身份时遇到了问题.
我希望有类似的东西:
<identity>
<userPrincipalName value="user@domain.com" />
</identity>
Run Code Online (Sandbox Code Playgroud)
我的端点配置,但当我尝试:
endpoint.Identity = new IdentityElement(){
UserPrincipalName = UserPrincipalNameElement() { Value = "user@domain.com" }
}
Run Code Online (Sandbox Code Playgroud)
它失败,因为属性endpoint.Identity和identityElement.UserPrincipalName是readonly(我不知道为什么,因为entity.Address不是只读的)
有没有办法解决这个限制并设置身份配置?
我如何使用ASCII装甲内存流?ASCII装甲是将二进制数据编码为可打印的ASCII字符串的过程.这用于例如加密.
在C#中是否有任何标准方法可以实现此解码支持?像API一样?否则,怎么办呢?
有时我错误地在Visual Studio中按下build(或Debug/F5),这会导致构建过程.我不知道如何阻止这一点,停止调试按钮被禁用,通常我必须等到编译完成才能再次编码(如果我的解决方案有相当多的csproj,这可能需要一段时间).
知道如何停止编译过程吗?
我有一个与OrderBy和ThenBy的linq查询(不是数据库相关的)
var sortedList = unsortedList
.OrderBy(foo => foo.Bar) //this property access is relatively fast
.ThenBy(foo => foo.GetCurrentValue()) //this method execution is slow
Run Code Online (Sandbox Code Playgroud)
获得foo.Bar很快,但执行foo.GetCurrentValue()速度很慢.返回值仅在某些成员具有相等的Bar值时才重要,这种情况很少发生,但在发生这种情况时需要考虑.是否可以选择仅在需要在相等Bar值的情况下进行平局时执行ThenBy子句?(即如果foo.Bar值是唯一的,则不会执行).
另外,实际上Bar也有点慢,所以最好不要为同一个对象调用它两次.
我想使用可能需要一些时间来计算的值对对象列表进行排序。现在我有这样的代码:
public IEnumerable<Foo> SortFoo(IEnumerable<Foo> original)
{
return foos.OrderByDescending(foo => CalculateBar(foo));
}
private int CalculateBar(Foo foo)
{
//some slow process here
}
Run Code Online (Sandbox Code Playgroud)
上面的代码的问题在于,它将为每个项目多次调用计算值,这不好。可能的优化是使用缓存的值(可能是字典),但这将意味着SortFoo在每次排序后都必须清除缓存(以避免内存泄漏,我确实希望在每次SortFoo调用时重新计算该值)。
有没有更清洁,更优雅的解决方案?
在使用mock/fake对象进行单元测试时,我想知道在SetUp或测试方法本身中初始化模拟是否更为可取,如果我的测试类包含测试同一类的方法(因此,所需的假对象应该是对于所有测试案例都是一样的).像这样的东西:
class FooTests
{
Mock<IBar> mockBar;
Foo fooUnderTest;
[SetUp]
public void Setup()
{
mockBar = new Mock<IBar>();
fooUnderTest = new fooUnderTest(mockBar.Object);
}
[Test]
public void MyTest()
{
//setup mock methods
mockBar.SetUp( ... )
//test
fooUnderTest.TestSomething()
//assert something here
}
}
Run Code Online (Sandbox Code Playgroud)
看起来这会阻止我们在每个测试用例中将代码复制到mockBar和fooUnderTest,但缺点是我必须声明类变量mockBar和fooUnderTest(或者这真的是一个缺点?),如果我有问题想要有一些特殊的设置(例如,如果在某个测试用例中我想要覆盖Foo的一些虚拟方法).有什么建议什么是最佳做法?
.net ×7
c# ×5
linq ×2
sorting ×2
app-config ×1
ascii ×1
encoding ×1
git ×1
ienumerable ×1
if-statement ×1
mocking ×1
msbuild ×1
sql-order-by ×1
string ×1
tdd ×1
unit-testing ×1
wcf ×1