我正在尝试获取项目根目录下的所有单元测试程序集的列表.我可以这样做:
<CreateItem Include="**\bin\**\*.UnitTest.*.dll">
<Output TaskParameter="Include" ItemName="Items"/>
</CreateItem>
Run Code Online (Sandbox Code Playgroud)
但是,由于它们存在于多个子目录中,因此会多次找到相同的DLL.有没有一种简单的方法让我根据项目元数据(即文件名和扩展名)进行规范化,以便获得一个唯一的单元测试DLL列表?或者我是否必须编写自己的任务?
我有一个具有以下结构的方法:
public Task InitializeAsync()
{
var taskCompletionSource = new TaskCompletionSource<bool>();
Task firstTask = ...;
// secondTask calls taskCompletionSource.TrySetResult(true) once it considers itself "done"
Task secondTask = firstTask.ContinueWith(..., TaskContinuationOptions.OnlyOnRanToCompletion);
Action<TasK> errorContinuation = x =>
{
taskCompletionSource.SetException(e.Exception);
};
firstTask.ContinueWith(errorContinuation, TaskContinuationOptions.OnlyOnFaulted);
secondTask.ContinueWith(errorContinuation, TaskContinuationOptions.OnlyOnFaulted);
return taskCompletionSource.Task;
}
Run Code Online (Sandbox Code Playgroud)
重要的:
InitializeAsyncsecondTask决定之前,返回的任务不会被视为完成secondTask只有firstTask成功才会运行firstTask或secondTask导致整个任务失败我想知道的是,在实现相同的功能的同时,是否有更简洁的方式来表达这一点.我正在使用.NET 4.0,但我对4.5是否也使这更容易感兴趣.
考虑以下:
[Fact]
public void foo()
{
var result = new Subject<bool>();
var startCount = 0;
var completionCount = 0;
var obs = Observable
.Defer(() =>
{
++startCount;
return result.FirstAsync();
})
.Do(_ => ++completionCount)
.Publish()
.RefCount();
// pretend there are lots of subscribers at once
var s1 = obs.Subscribe();
var s2 = obs.Subscribe();
var s3 = obs.Subscribe();
// even so, we only expect to be started once
Assert.Equal(1, startCount);
Assert.Equal(0, completionCount);
// and we won't complete until the result ticks through …Run Code Online (Sandbox Code Playgroud) 我正在试图找出如何释放WriteableBitmap内存.
在下一部分代码中,我填充了一个WriteableBitmap的后备缓冲区,其中包含来自"BigImage"(3600*4800 px,仅用于测试)的大量数据.如果我评论位图和图像等于null的行,那么内存即使不再使用图像和位图,它也不会发布,应用程序消耗大约230 MB!
正如您在代码末尾所看到的,调用GC.Collect()来释放内存是必要的.
所以问题是,释放WriteableBitmap对象使用的内存的正确方法是什么?GC.Collect()是唯一的方法吗?
任何帮助都会很棒.
PS.对不起,我的英语不好.
private void buttonTest_Click(object sender, RoutedEventArgs e)
{
Image image = new Image();
image.Source = new BitmapImage(new Uri("BigImage"));
WriteableBitmap bitmap = new WriteableBitmap(
(BitmapSource)image.Source);
bitmap.Lock();
// Bitmap processing
bitmap.Unlock();
image = null;
bitmap = null;
GC.Collect();
}
Run Code Online (Sandbox Code Playgroud) 假设在一个实体中有属性id,用户名,年龄,地址.现在我只想要id和用户名,我使用这个代码.
预测允许从查询中返回除实体列表之外的其他内容.
var proj = Projections.ProjectionList()
.Add(Projections.Property("Id"), "Id")
.Add(Projections.Property("Username"), "Username");
var list2 = DetachedCriteria.For<User>()
.Add(Expression.Eq("Username", "lachlan"))
.GetExecutableCriteria( sessionFactory.GetCurrentSession())
.SetProjection( proj )
.List();
Run Code Online (Sandbox Code Playgroud)
我将如何检索值.在哪个对象中将采用这些值.
考虑以下:
using System;
using System.Dynamic;
using System.Linq;
namespace DynamicObjectTest
{
class Program
{
static void Main(string[] args)
{
dynamic dyn = new TestDynamic();
Console.ReadKey();
foreach (var i in Enumerable.Range(0, 100))
{
Console.WriteLine(dyn.Foo());
Console.WriteLine(dyn.Bar());
}
Console.ReadKey();
}
}
class TestDynamic : DynamicObject
{
public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
{
if (binder.Name == "Foo")
{
result = "Bar";
return true;
}
else if (binder.Name == "Bar")
{
result = "Foo";
return true;
}
return base.TryInvokeMember(binder, args, out …Run Code Online (Sandbox Code Playgroud) 我正在开展一个项目,允许用户以类似于OLAP系统中提供的方式对数据进行切片和切块.但是,数据不存储在OLAP系统中,而是作为来自关系系统的平面记录提供给前端.
我最初的想法是,我可能需要获取该平面数据并使用它填充客户端多维数据集数据结构,然后可以通过编程接口查询.虽然这样的数据结构听起来很有趣并且难以自我编写,但我想知道是否已经有一个我可以利用的免费开放实现.
理想情况下,它会:
有谁知道我可以使用的这样一个项目?
为什么以下是合法的C#:
public interface ISomeInterface
{
int SomeProperty
{
get;
}
}
public class SomeClassImplementingInterface : ISomeInterface
{
public int SomeProperty
{
get { return 32; }
protected set {}
}
}
Run Code Online (Sandbox Code Playgroud)
但这不是:
public abstract class SomeAbstractClass
{
public abstract int SomeProperty
{
get;
}
}
public class SomeClassExtendingAbstractClass : SomeAbstractClass
{
public override int SomeProperty
{
get { return 32; }
protected set {}
}
}
Run Code Online (Sandbox Code Playgroud)
后者导致以下编译时错误:
'InterfaceAbstractTest.SomeClassExtendingAbstractClass.SomeProperty.set':无法覆盖,因为'InterfaceAbstractTest.SomeAbstractClass.SomeProperty'没有可覆盖的set访问器InterfaceAbstractTest
在允许前者的同时不解除后者的原因是什么?
我有一个系统,其中.NET客户端使用Kerberos针对Java服务器进行身份验证。一切正常,但是我正在尝试改善服务器配置。当前,在C:\的根目录中需要一个keytab文件,因为我的jaas.conf看起来像这样:
Server {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
isInitiator=false
keyTab="///C:/keytab"
principal="XXX";
};
Run Code Online (Sandbox Code Playgroud)
我正在尝试使该keyTab属性成为相对路径,但是没有运气。我试过的
keyTab="///keytab"keyTab="///./keytab"keyTab="classpath:keytab"所有这些都会导致异常,因此很显然找不到密钥表文件。
我搜索并阅读了文档,然后将头撞在墙上。谁能透露我要实现这一目标的神奇咒语?
我正在尝试创建一个 iOS 项目,其中包含在其他平台(Android)之间共享的 C 代码。我正在编译的一些第三方库依赖于将某些目录作为搜索路径包含在内。但是,无论我尝试什么,我都无法让 CocoaPods.podspec文件在编译搜索路径中包含给定目录。我正在使用 CocoaPods 1.8.4。
虽然这是一个 Flutter 插件,但据我了解,这是 CocoaPods/Xcode 的问题,因为 Flutter 仅设置了项目文件。然而,值得注意的是,Flutter 设置了一个示例工作区,我不想修改它。我希望修改插件本身以编译必需的代码,而不是示例工作区/项目。换句话说,我只想ios/repro_cocoapods_issue.podspec修改文件。
如果重要的话,我使用以下 Flutter 命令来创建项目:
flutter create -t plugin -i objc -a java repro_cocoapods_issue
Run Code Online (Sandbox Code Playgroud)
我在 GitHub上有完整的重现。要重现,请在 Xcode 中打开工作区example/ios/Runner.xcworkspace并尝试构建。
这些是我在文件中尝试过的事情ios/repro_cocoapods_issue.podspec:
s.xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PROJECT_DIR}/external/"'}s.xcconfig = { 'USER_HEADER_SEARCH_PATHS' => '"${PROJECT_DIR}/external/"'}s.user_target_xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PROJECT_DIR}/external/"'}s.user_target_xcconfig = { 'USER_HEADER_SEARCH_PATHS' => '"${PROJECT_DIR}/external/"'}s.pod_target_xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PROJECT_DIR}/external/"'}s.pod_target_xcconfig = { 'USER_HEADER_SEARCH_PATHS' => '"${PROJECT_DIR}/external/"'}s.compiler_flags …