我的C#WinForms解决方案有两个项目.一个DLL,它是我正在研究的主要项目,以及一个可执行的WinForms,我称之为"Sandbox",这样我就可以一次性轻松地编译/运行/调试DLL.
我在两个项目的.Net 4.0工作.
一切都工作正常,直到我添加了一些看似无辜的代码,并在DLL中引用了System.Web.现在我的Sandbox项目无法看到DLL项目的命名空间.我没有改变任何我认为应该影响这个的东西.
如果我从Sandbox引用中删除了对DLL的项目引用并重新添加它,那么红色下划线全部消失,颜色编码将返回给我所有的类等; 但是当我尝试构建解决方案时,整个事情再次崩溃.
当我右键单击Sandbox的引用中的DLL项目并在对象浏览器中查看时,我可以看到命名空间和所有内容.
我觉得这可能是某种错误?
这是某种VS2010的错误吗?几个月前我遇到了同样的问题,我当时只能通过制作一个全新的项目并重新导入我的文件来修复它.但是,这一次,我有一个bajillion文件,只会作为最后的手段!
编辑:经过惊慌失措并撤消所有我的更改后,试图找到导致问题的原因,似乎是这一行:
string url = "http://maps.google.com?q=" + HttpUtility.UrlEncode(address);
Run Code Online (Sandbox Code Playgroud)
如果我注释掉这一行,那么我没有命名空间错误,项目构建正常.虽然我看不出这条线有什么不妥.
我之前使用的是带有24英寸显示器和笔记本电脑内置显示器的双显示器设置.
我已经连接了第二台24英寸显示器,而且根本不再使用笔记本电脑屏幕.(它被禁用).
在我的常规视图(编码等)中,属性窗口,解决方案资源管理器,工具箱等都是可见的,我只需要移动/调整它们以适应更大的屏幕尺寸.
不幸的是,调试视图不是这种情况.我需要调试一些东西,看起来我的本地人和其他窗户都在屏幕边缘.我已经尝试过Ctrl + D,L但它似乎不想提起它.
我无法在菜单中的任何地方找到重置窗口的命令.
知道我能做什么吗?
我正在寻找一个读/写.xls(而不是.xlsx)文件的Excel库.
我正在使用excellibrary,但它非常多,我似乎无法打开我创建的文件.该问题已有近一年的历史,尚未得到修复.
我在另一个线程中看到有人建议使用EPPlus,但这只适用于2007/2010 .xlsx格式.
我过去曾经使用过Koogra,对它很满意,但我相信它只能读...不写.
如果您知道图书馆,请告诉我它的名称.
编辑:我很高兴用必要的内置Microsoft.Office.Interop.Excel创建我的Excel文件,但是我的机器有Office 2007而目标机器只有Office 2003.我注意到我有2个文件版本那个库:12和14.我检查了目标机器上的Excel版本,它是11.8169.8172 - 我假设内置的Excel互操作不能在目标上运行?
我做了一个小实验:
public abstract class MyClass
{
private static int myInt = 0;
public static int Foo()
{
return myInt;
}
public static int Foo(int n)
{
myInt = n;
return bar();
}
private static int bar()
{
return myInt;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我跑了:
MessageBox.Show(MyClass.Foo().ToString());
MessageBox.Show(MyClass.Foo(3).ToString());
MessageBox.Show(MyClass.Foo().ToString());
MessageBox.Show(MyClass.Foo(10).ToString());
MessageBox.Show(MyClass.Foo().ToString());
Run Code Online (Sandbox Code Playgroud)
我预期的结果是0,3,0,10,0.
令我惊讶的是,我得到了0,3,3,10,10.
这些变化持续多久了?程序执行的持续时间?调用静态方法的函数的持续时间?
这是我的示例XML代码:
<bestContact>
<firstName><![CDATA[12345]]></firstName>
<lastName />
</bestContact>
Run Code Online (Sandbox Code Playgroud)
我在用:
<xs:element name="lastName" type="xs:string" minOccurs="1" nillable="false"/>
Run Code Online (Sandbox Code Playgroud)
XSD应该被验证lastName
为非空或空.
我有一个整数数组,我正在循环它们:
for (int i = 0; i < data.Length; i++)
{
// do a lot of stuff here using data[i]
}
Run Code Online (Sandbox Code Playgroud)
如果我做:
for (int i = 0; i < data.Length; i++)
{
int value = data[i];
// do a lot of stuff with value instead of data[i]
}
Run Code Online (Sandbox Code Playgroud)
是否有任何表现收益/损失?
根据我的理解,直接访问C/C++数组元素,即整数的n元素数组具有长度为n*sizeof(int)的连续内存块,而程序访问元素i通过执行类似*data [i]的操作=*data [0] +(i*sizeof(int)).(请原谅我滥用符号,但你理解我的意思.)
所以这意味着C/C++在引用数组变量时应该没有性能增益/损失.
C#怎么样?C#有一堆额外的开销,如data.Length,data.IsSynchronized,data.GetLowerBound(),data.GetEnumerator().
显然,C#数组与C/C++数组不同.
那么判决是什么?我应该存储int value = data [i]并使用值,还是没有性能影响?
我在我的C#WinForms应用程序中使用.net 4.0中的Chart控件.我有两个系列的数据显示为折线图.
我基本上将供需作为时间的函数.我希望需求是一种颜色的实线,并且供应是相同颜色的虚线.
我可以设置颜色很好,但我找不到任何可以将线条样式设置为虚线的地方.
我有一个大约10,000个工作人员的列表,List<T>
我有一个ListBox
包含这些工作人员的子集,具体取决于文本框中的搜索词.
假设某个Staff
对象具有以下公开公开的属性:
string FirstName
string LastName
string MiddleName
int StaffID
int CostCentre
Run Code Online (Sandbox Code Playgroud)
我可以写一个这样的函数:
bool staffMatchesSearch(Staff stf)
{
if (tbSrch.Text.Trim() == string.Empty)
return true; // No search = match always.
string s = tbSrch.Text.Trim().ToLower();
// Do the checks in the order most likely to return soonest:
if (stf.LastName.ToLower().Contains(s))
return true;
if (stf.FirstName.ToLower().Contains(s))
return true;
if (stf.MiddleName.ToLower().Contains(s))
return true;
if (stf.CostCentre.ToString().Contains(s))
return true; // Yes, we want partial matches on CostCentre
if (stf.StaffID.ToString().Contains(s))
return true; // …
Run Code Online (Sandbox Code Playgroud) 我有一个带有导出函数的C++ DLL:
extern "C" __declspec(dllexport) double* fft(double* dataReal, double* dataImag)
{
[...]
}
Run Code Online (Sandbox Code Playgroud)
该函数计算两个双数组(实数和虚数)的FFT,返回单个双数组,实数为虚数组件交错:{Re,Im,Re,Im,...}
我不知道如何在C#中调用此函数.我在做的是:
[DllImport("fft.dll")]
static extern double[] fft(double[] dataReal, double[] dataImag);
Run Code Online (Sandbox Code Playgroud)
当我像这样测试它:
double[] foo = fft(new double[] { 1, 2, 3, 4 }, new double[] { 0, 0, 0, 0 });
Run Code Online (Sandbox Code Playgroud)
我收到MarshalDirectiveException异常:
无法封送"返回值":无效的托管/非托管类型组合.
我假设这是因为C++ double*
与C#不完全相同double[]
,但我不确定如何解决它.有任何想法吗?
编辑:我已经更改了签名,以便我现在传递一些额外的信息:
extern "C" __declspec(dllexport) void fft(double* dataReal, double* dataImag, int length, double* output);
Run Code Online (Sandbox Code Playgroud)
我们总是知道长度output
是2倍length
和
[DllImport("fft.dll")]
static extern void fft(double[] dataReal, double[] dataImag, int length, out double[] …
Run Code Online (Sandbox Code Playgroud) 这个问题与这个线程有关,但该线程没有答案,所以这在技术上并不重复.
我已经使用ADT 10.0.1 SDK工具r10在我的Windows 7 x64和Eclipse SDK 3.6.2上运行了ADB 1.0.26,并且我已经安装了所有Android SDK版本.
当我以调试模式将手机连接到计算机并输入adb devices
命令提示符时,我的手机会显示出来.这是一个Inspire 4G.我可以adb shell
进入设备ls
,所以我假设链的adb/driver/phone部分正常工作.
现在,如果我连接手机进入Eclipse,我会得到:
[2011-03-28 17:46:33 - DeviceMonitor] Adb连接错误:远程主机强行关闭现有连接
[2011-03-28 17:46:34 - DeviceMonitor]连接尝试次数:1
[2011-03-28 17:46:36 - DeviceMonitor]连接尝试次数:2
[...]
[2011-03-28 17:47:53 - DeviceMonitor]连接尝试次数:10
[2011-03-28 17:46:54 - DeviceMonitor]连接尝试次数:11
[2011-03-28 17:47:00 - adb]
[2011-03-28 17:47:00 - adb]此应用程序已请求Runtime以不寻常的方式终止它.
[2011-03-28 17:47:00 - adb]请联系应用程序的支持团队以获取更多信息.
[2011-03-28 17:47:04 - DeviceMonitor] Adb连接错误:远程主机强行关闭现有连接
[2011-03-28 17:47:05 - DeviceMonitor]连接尝试:1
[2011-03-28 17:47:07 - DeviceMonitor]连接尝试次数:2
等等...这永远循环.如果我启动Eclipse然后连接手机,或者如果我连接手机然后启动Eclipse,则无关紧要.
我认为这不重要,但我的手机是Inspire 4G,它根植于并运行Revolution 4G 3.2
c# ×7
.net ×1
adb ×1
android ×1
arrays ×1
c++ ×1
charts ×1
dllimport ×1
eclipse ×1
excel ×1
interop ×1
marshalling ×1
mschart ×1
namespaces ×1
optimization ×1
performance ×1
read-write ×1
search ×1
string ×1
winforms ×1
xls ×1
xml ×1
xsd ×1