正如本 SO答案所指出的,默认情况下,Visual Studio中的" 添加">"现有项目"对话框显示" 添加"按钮(意味着所选项目将物理复制到新位置),而理想的操作通常(始终是?)到添加为链接.
是否可以配置Visual Studio,以便在打开" 添加">"现有"项目对话框时默认选择" 添加为链接"?
我已经彻底搜索了Visual Studio中的" 选项"对话框,并检查了MSDN文档以获得答案,但到目前为止无济于事.
当两个新项目共享相同的代码库时,Project Linker将是自动链接的一个很好的选择.然而,从现有到新的项目连接大量文件时,一个似乎被限制在添加>现有项目的做法,这项工作可能会更加方便,不易出错,如果添加的链接将是默认动作.
我正在将现有的.NET类库改编为可移植类库.我使用配置文件78(.NET 4.5,Windows Store 8,Windows Phone 8)支持配置文件158(也针对Silverlight 5),因为我希望能够编译unsafe原始库的代码.
.NET库包含很多标记的类[Serializable],所以我实现了一个包含虚拟SerializableAttribute实现的支持PCL库:
public class SerializableAttribute : Attribute { }
Run Code Online (Sandbox Code Playgroud)
它是从主PCL库中引用的.
为了充分利用.NET应用程序中的主PCL库,同时避免类型名称冲突,我还准备了一个.NET支持库(具有与PCL支持库相同的强名称),包含类型转发声明:
[assembly: TypeForwardedTo(SerializableAttribute)]
Run Code Online (Sandbox Code Playgroud)
并在我的.NET应用程序中显式引用.NET支持库而不是PCL库.
在准备好所有这些并能够成功编译PCL适配库之后,我将重新使用原始.NET库中的单元测试,现在引用PCL主库和.NET支持库.
这通常非常有效,但对于包含[Serializable]带有[OnDeserialized]装饰方法的类的单元测试:
[Serializable]
public class Foo
{
[OnDeserialized]
private void DoSomething(StreamingContext context) { }
}
Run Code Online (Sandbox Code Playgroud)
我得到以下内容TypeLoadException:
在程序集"MyPclAssembly"中键入"Foo"的方法为"DoSomething",其序列化属性的签名不正确.
(可以注意到,OnDeserializedAttribute 它包含在便携式子集中,可能是因为它在[DataContract]序列化中也被识别出来.)
在原始.NET库上运行单元测试时,我没有获得异常.我仔细分析了Foo类中的方法签名,它完全符合这些(de-)序列化辅助方法应具有的签名,请参见此处.我也试图改变的可见性[OnDeserialized]方法internal和public,但无济于事.
使用PCL库时出现此异常的原因是什么,我该怎么做才能避免它?
编辑我已经检查了PCL库的IL …
c# serialization attributes forward-declaration portable-class-library
我试图从NuGet命令行将MvvmCross.HotTuna.CrossCore 3.0.14安装到WindowsPhone 8.0类库中.我尝试这样做时遇到的错误是:
PM> install-package MvvmCross.HotTuna.CrossCore 3.0.14
install-package : No compatible project(s) found in the active solution.
At line:1 char:1
+ install-package MvvmCross.HotTuna.CrossCore 3.0.14
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Install-Package], InvalidOperationException
+ FullyQualifiedErrorId : NuGetNoCompatibleProjects,NuGet.PowerShell.Commands.InstallPackageCommand
Run Code Online (Sandbox Code Playgroud)
在此解决方案中,我有另一个Windows Phone 8应用程序项目(目标Windows Phone OS版本设置为Windows Phone OS 8.0),其中安装了以下MvvmCross软件包.这是先前完成没有任何问题:
<packages>
<package id="MvvmCross.HotTuna.CrossCore" version="3.0.14" targetFramework="wp71" />
<package id="MvvmCross.HotTuna.MvvmCrossLibraries" version="3.0.14" targetFramework="wp71" />
<package id="MvvmCross.HotTuna.Plugin.File" version="3.0.14" targetFramework="wp71" />
<package id="MvvmCross.HotTuna.Plugin.Json" version="3.0.14" targetFramework="wp71" />
<package id="MvvmCross.HotTuna.Plugin.Location" version="3.0.14" targetFramework="wp71" />
<package id="MvvmCross.HotTuna.Plugin.Messenger" version="3.0.14" targetFramework="wp71" />
<package id="MvvmCross.HotTuna.Plugin.Sqlite" version="3.0.14" targetFramework="wp71" …Run Code Online (Sandbox Code Playgroud) 我需要使用遗传算法和PSO最小化函数.
不同的帖子建议使用DEAP(我正在使用python),但我甚至不懂如何开始.
我们可以考虑例如区间i上的f
i=arange(-10,10,0.1)
def f(x):
return x*sin(x)
Run Code Online (Sandbox Code Playgroud)
如何使用DEAP最小化此功能?
我希望能够解析的串时间,其中运行小时从0到23(小时,分,秒),并且其中用于一个位数小时前述零是任选的.
我希望能够解析为有效对象的时间字符串示例DateTime:
我试图使用C#方法DateTime.ParseExact来管理解析,但我不能在它的生命周期中提出一个格式字符串,可以处理"没有前置零的单位数小时"场景.
我应该如何指定DateTime.ParseExact格式字符串以使用相同的代码行充分解析上面的所有示例?
受自定义日期和时间格式的MSDN页面的启发,我尝试了以下方法:
DateTime.ParseExact(time_string, "Hmmss", CultureInfo.InvariantCulture);
DateTime.ParseExact(time_string, "%Hmmss", CultureInfo.InvariantCulture);
DateTime.ParseExact(time_string, "HHmmss", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
所有这些格式字符串都适用于上面的前两个示例情况,但面对一位数小时而没有前面的零,所有公式都会抛出一个FormatException.
我注意到如果我在BIOS中禁用超线程,我的多线程计算会运行得更快.
我还了解到,我可以通过修改当前进程的处理器关联来以编程方式禁用(逻辑)CPU:例如,在C#中这样:
// using System.Diagnostics;
var current = Process.GetCurrentProcess();
var affinity = current.ProcessorAffinity.ToInt32();
current.ProcessorAffinity = new IntPtr(affinity & 0x5555);
Run Code Online (Sandbox Code Playgroud)
至少从性能的角度来看,通过改变处理器亲和性来禁用每秒(逻辑)CPU与完全禁用超线程具有相同的效果吗?
这种传输语法中的数据是如何组织的?标准说明:
此传输语法适用于整个DICOM数据集的编码.首先根据第A.2节中规定的规则对整个数据集进行编码.然后使用Internet RFC 1951中定义的"Deflate"算法压缩整个字节流.
最初我认为这意味着整个DICOM文件本身都是gzip压缩.但是如果整个文件被gzip压缩,包括包含识别传输语法的头,那么解析器/查看器如何能够读取传输语法以知道它被gzip压缩?
从给定这种类型文件的查看器的角度来看,它如何知道这种传输语法?寻找GZIP标题?
是否有使用此传输语法的公开示例图像?
我正在用C#开发一个可移植的类库,我希望将其转换double为a long.这个问题最直接的解决方案是使用该BitConverter.DoubleToInt64Bits方法,但不幸的是,这个方法在.NET类库的可移植库子集中不可用.
作为替代方案,我提出了以下"双通"位转换:
var result = BitConverter.ToInt64(BitConverter.GetBytes(x), 0);
Run Code Online (Sandbox Code Playgroud)
我的测试表明,这个表达式始终产生与之相同的结果DoubleToInt64Bits.然而,我的基准测试也表明,这种替代配方约4慢倍DoubleToInt64Bits时,在一个完整的.NET Framework应用程序来实现.
仅使用可移植库子集,是否可以实现替换DoubleToInt64Bits它比上面的公式更快?
我有一个通过Caliburn.Micro命名约定TextBox绑定到视图模型编号属性的WPF .我希望能够自定义字符串格式,同时保留Caliburn.Micro已设置的约定绑定.我该怎么办?DistanceTextBox
从我的视图模型:
public double Distance
{
get { return _distance; }
set
{
_distance = value;
NotifyOfPropertyChange(() => Distance);
}
}
Run Code Online (Sandbox Code Playgroud)
从我的观点来看:
<TextBox x:Name="Distance"/>
Run Code Online (Sandbox Code Playgroud)
当Distance非零时,我想用固定的小数组显示数字,当Distance为零时,我希望文本框为空.
使用显式绑定我可以将TextBox.Text属性绑定到Distance,然后我可以StringFormat同时设置:
<TextBox x:Name="Distance" Text="{Binding Distance, StringFormat=0.000;;#}"/>
Run Code Online (Sandbox Code Playgroud)
但是,显式Text绑定会使Caliburn.Micro命名约定绑定短路.是否可以自定义字符串格式而无需同时设置TextBox.Text属性的绑定路径,这样我就可以完全依赖Caliburn.Micro来处理Distance-to- TextBoxbinding?
我正在使用一个预构建的第三方类库(想想.NET Framework ...),它包含一个包含Foo以下成员的类:
public sealed class Foo {
private object _state;
public Foo(object state) { _state = state; }
}
Run Code Online (Sandbox Code Playgroud)
Foo它不包含public _state的制定者.
在特定情况下,我想将设置状态一个的Foo目标对象本身.
这不会编译:
Foo f;
f = new Foo(f); // Compilation error: Use of unassigned local variable 'f'
Run Code Online (Sandbox Code Playgroud)
鉴于上述先决条件,是否有任何我可以设置方式状态一的Foo目标对象本身?
基本原理Timer Windows 8.1中的类不包含使用对象本身Timer(AsyncCallback)分配Timer对象状态的构造函数.我试图将包含此Timer构造函数的.NET代码移植到Windows 8.1类库中,所以我关注的是如何将对象本身传递给其状态成员?这里进一步概述了这个问题,但我认为提出上述主要问题会更有效.
c# ×7
performance ×2
affinity ×1
attributes ×1
binding ×1
bitconverter ×1
constructor ×1
datetime ×1
deap ×1
deflate ×1
dicom ×1
mvvm ×1
mvvmcross ×1
python ×1
wpf ×1