我想通过使用静态成员访问器从PowerShell调用静态异步C#方法,例如:
电源外壳
function CallMyStaticMethod([parameter(Mandatory=$true)][string]$myParam)
{
...
[MyNamespace.MyClass]::MyStaticMethod($myParam)
...
}
Run Code Online (Sandbox Code Playgroud)
C#
public static async Task MyStaticMethod(string myParam)
{
...
await ...
...
}
Run Code Online (Sandbox Code Playgroud)
因为我的C#方法是异步的,所以我的C#方法是否可以正常运行而没有来自PowerShell的某种"等待"调用?
在VSTS中,是否可以在另一个发行完成时触发发行?我知道发布通常是由构建的完成触发的,但是我想知道是否可以将一个发布与另一个发布一起触发,以便将我的流程组织成多个发布并将它们链接在一起。
谢谢。
构建解决方案时,我收到以下警告:
在“ Microsoft.Azure.Documents.Client,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”上的显式绑定重定向与自动生成的绑定重定向冲突。考虑从应用程序配置文件中将其删除或禁用自动生成的绑定重定向。该构建会将其替换为:“ <bindingRedirect oldVersion =” 0.0.0.0-1.22.0.0“ newVersion =” 1.22.0.0“ xmlns =” urn:schemas-microsoft-com:asm.v1“ />”
但是,我在项目中的app.config文件只有以下内容,没有任何显式的程序集绑定重定向:
<configuration></configuration>
如果我没有任何明确的绑定重定向,为什么会有冲突?我的csproj文件没有任何提及AutoGenerateBindingRedirects的记录。
我正在使用 Visual Studio 2017 开发多项目解决方案。每次我执行构建、更改文件、切换分支、同步等操作时,.sln 解决方案文件都会发生变化。当我查看 Diff 以找出不断变化的内容时,我看到以下内容被添加到GlobalSection(ProjectConfigurationPlatforms) = postSolution我的 .sln 部分中:
{(此处为 GUID)}.Debug|x64.ActiveCfg = 调试|任何 CPU
{(此处为 GUID)}.Debug|x64.Build.0 = 调试|任何 CPU
{(此处为 GUID)}.Release|x64.ActiveCfg = 发布|任何 CPU
{(此处为 GUID)}.Release|x64.Build.0 = Release|任何 CPU
guid 指的是我的名为 MyProject 的项目,它是一个 Node.js 单元测试项目。我没有对这个项目进行任何更改,我查看了master分支并确认master没有这些额外的行。
我检查我的构建配置管理器,发现我的所有项目都有Config: Debug和Platform: x64,以及Config: Release和Platform: x64,除了 MyProject,它Platform: Any CPU同时具有调试和发布。但是,当我单击下拉列表将 Any CPU 更改为 x64 时,下拉列表中的唯一项目是 Any CPU。
为什么这种情况不断发生?必须不断单击“撤消更改”并等待 sln 重新加载,这很烦人。
我最近升级到了最新Newtonsoft.Json版本12.0.2。我之前运行的是旧版本 ( 11.0.2),在两者之间的某个位置,该StringEnumConverter.CamelCaseText属性已被弃用。
根据StringEnumConverter 类,"StringEnumConverter.CamelCaseText is obsolete. Set StringEnumConverter.NamingStrategy with CamelCaseNamingStrategy instead."我在以下场景中进行了以下更改CamelCaseText == true:
// Deprecated approach
new StringEnumConverter() { CamelCaseText = true };
// New approach
new StringEnumConverter() { NamingStrategy = new CamelCaseNamingStrategy() };
Run Code Online (Sandbox Code Playgroud)
虽然这看起来很简单,但我不确定如何处理CamelCaseText == false. 我已阅读CamelCaseNamingStrategy 类,但不知道在哪里禁用驼峰命名法。我的猜测是,我需要使用不同的命名策略类,例如CamelCaseNamingStrategy,DefaultNamingStrategy但我不确定此类的行为有何不同。
有人可以向我指出解释差异的文档,和/或帮助我了解在这种情况下使用哪种命名策略吗?
// Deprecated approach
new StringEnumConverter() { CamelCaseText = false };
// New approach
new StringEnumConverter() { NamingStrategy = …Run Code Online (Sandbox Code Playgroud) 假设我有一个enum名为 MyEnum的 C# :
public enum MyEnum
{
Apple,
Banana,
Carrot,
Donut
}
Run Code Online (Sandbox Code Playgroud)
我有一个List<MyEnum>这样的:
List<MyEnum> myList = new List<MyEnum>();
myList.Add(MyEnum.Apple);
myList.Add(MyEnum.Carrot);
Run Code Online (Sandbox Code Playgroud)
将 my 转换为 a的最简单方法List<MyEnum>是List<string>什么?我是否必须创建一个新的List<string>然后遍历枚举列表,一次一个项目,将每个枚举转换为一个字符串并将其添加到我的 new 中List<string>?
有没有一种简单的方法可以从for循环创建一个列表,在循环的每次迭代中迭代迭代器?
例如,假设我有一个迭代器,每次调用它时都会返回一个随机的double:
val randDoubleIterator = new Iterator[Double] {
override def hasNext: Boolean = true
override def next(): Double = {
Random.nextDouble
}
}
Run Code Online (Sandbox Code Playgroud)
假设我要创建一个包含10个随机双打的列表.我可以循环遍历迭代器以获得10个随机双打,并将其添加到我的列表(myList)中:
// The following is pseudocode
val myList = new List
for (i <- 0 until 10) {
myList.add(randDoubleIterator.next())
}
Run Code Online (Sandbox Code Playgroud)
这样做有更简单,更简洁的方法吗?
c# ×5
async-await ×1
azure-devops ×1
enums ×1
json ×1
json.net ×1
powershell ×1
release ×1
scala ×1