我们需要使用特定的库进行序列化,使用如下:
var obj = Serializer.Deserialize(myStream); //Read
Serializer.Serialize(obj, myOtherStream); //Write
Run Code Online (Sandbox Code Playgroud)
我们需要通过Web服务公开它,我已经得到了这样的工作:
所有这一切似乎都很好.
有没有更好的方法来处理这个?我们希望我们的服务在IIS中运行,但我们不知道是否有任何开销使这个aspx页面.
使用WCF连接它有什么好处吗?
我有一个单元测试(使用MSTest),如下所示:
[TestMethod]
public void MyTest()
{
var viewModel = new MyViewModel();
viewModel.Run();
//Assert something here
}
Run Code Online (Sandbox Code Playgroud)
Run是一个返回void的异步方法.
让我们说Run是这样实现的:
public async void Run()
{
//Show a busy indicator here
try
{
var result = await myAsyncModelClass.LongRunningOperation();
//Use the results here
}
finally
{
//Hide the busy indicator here
}
}
Run Code Online (Sandbox Code Playgroud)
myAsyncModelClass.LongRunningOperation(),它本身就是一个异步方法,它返回一些Task<T>地方,其中T是我的ViewModel感兴趣的结果.
我的问题是,我的测试是Run异步运行该方法,因此在Run方法完成之前调用我的断言.奇怪的是,当我放置一个断点时,b/c永远不会达到finally块,因为断言失败了.如何保持Run方法同步以便能够对其进行单元测试?
我也有单元测试myAsyncModelClass.LongRunningOperation(),但我只是打电话,Task<T>.Wait()因为它返回一个任务.这使得它在单元测试时同步.
另外,我想提一下,Run()由一个MVVM框架神奇地调用ICommand. void可能会或可能不是要求退货类型,我将不得不尝试.
我们需要在只能运行.NET 2.0的机器上实现WCF服务.
该机器是Windows XPe POS终端,我们还没有找到安装.NET 3.0的方法.我们无法使用新的XPe映像对其进行格式化,因为安装了专有的POS应用程序和驱动程序.
有没有办法在.NET 2.0上实现WCF服务?我们可以像.NET CF那样使用标准的XmlSerializer作为消息,但.NET CF不支持作为服务器......
另一种解决方案是以某种方式安装.NET 3.0.安装程序抱怨没有安装Windows XP SP2,Windows Update无法在XPe上运行.
有任何想法吗?
更新:我们还希望使用SOAP Web服务,但我们的目标平台没有安装IIS.有没有人知道在没有IIS的情况下托管.NET 2.0 Web服务的良好(生产质量)方式?
解决方案:我们正在使用Cassini和.NET 2.0 Web服务作为明确的答案.到目前为止,这似乎运作良好.谢谢您的帮助.
我在C#中编写一个小框架,用于将数据导入SQL Server.
我注意到,如果你试图使用?如果使用System.Data.SqlClient命名空间,则它们不起作用.
但是,如果使用System.Data.OleDb命名空间来处理数据库,它们可以正常工作.(您只需在连接字符串中添加Provider = SQLOLEDB)
所以我有几个问题,因为?我的解决方案需要语法:
为了详细说明我正在尝试做什么,我的框架将采用一些自定义属性装饰的类并生成SQL,如下所示:
INSERT INTO myTable (col1, col2, ...) VALUES (?, ?, ...)
Run Code Online (Sandbox Code Playgroud)
这个字符串将使用一个IDbCommand和几个IDataParameters创建,对于每个ExecuteNonQuery,它只会在IDataParameters上设置值.
有什么想法吗?
编辑:我尝试使用命名参数作为p0,p1等作为提到的回答者,它在SqlClient上工作得很好.但是,如果我使用Oledb,则会出错:
"Must declare the scalar variable @p0."
Run Code Online (Sandbox Code Playgroud)
我的参数创建如下:
new OleDbParameter("p" + index, GetType(attribute));
//GetType does work to get the correct SqlDbType
Run Code Online (Sandbox Code Playgroud)
怎么了?我也试过添加和删除参数名称中的@符号无济于事.
最终编辑:我刚刚使用Oledb?和SqlClient使用命名参数.我可以为新的提供商来回改变.
我正在决定在使用MonoTouch进行开发时需要使用.xib文件的位置.
我目前的项目需要与iPhone和iPad一起使用,所以我想知道即使使用Interface Builder也是值得的.我必须删除一些设计器文件,以便2个不同的视图(每个设备一个)转到同一个控制器.我也是唯一一个在此工作的人,也没有设计师在IB工作.
以下是几个问题:
思考?
我正在使用libgen.h中的dirname从文件名的路径获取目录路径.
这是它的签名:
char * dirname (char *path)
Run Code Online (Sandbox Code Playgroud)
在32位机器上编译或使用-m32与gcc编译时,一切正常.
我的代码看起来像这样:
char* path = "/path/to/my/file.txt";
char* path_cpy = strdup(path);
const char* dir = (const char*)dirname(path_cpy);
Run Code Online (Sandbox Code Playgroud)
如果我在64位机器上编译,我会收到警告:
"warning: cast to pointer from integer of different size"
Run Code Online (Sandbox Code Playgroud)
这将修复警告,但在运行时崩溃:
const char* dir = (const char*)(uintptr_t)dirname(path_cpy);
Run Code Online (Sandbox Code Playgroud)
我之前从未尝试过编译32/64位,有没有办法解决这个问题?
我在 perl 中使用TAP::Harness是这样的:
$harness = TAP::Harness->new({
formatter_class => 'TAP::Formatter::Console',
merge => 1,
verbosity => 1,
normalize => 1,
color => 1,
test_args => ['--url', $url, '--session', $session],
});
Run Code Online (Sandbox Code Playgroud)
一段时间后,我调用 $harness->runtests(),传递一系列测试。
问题是,在我所有的测试中:
use Data::Dumper;
print Dumper \@ARGV;
Run Code Online (Sandbox Code Playgroud)
输出:
$VAR1 = [];
Run Code Online (Sandbox Code Playgroud)
test_args 在底层测试中没有出现在@ARGV 中吗?我需要将一些选项传递给每个测试。
我们刚刚向应用程序商店提交了一个新的Xamarin.iOS应用程序,并收到Apple发出的警告:
We have discovered one or more issues with your recent delivery for "My App". Your delivery was successful, but you may wish to correct the following issues in your next delivery:
Non-PIE Binary - The executable 'MyApp.app' is not a Position Independent Executable. Please ensure that your build settings are configured to create PIE executables. For more information, refer to:
Run Code Online (Sandbox Code Playgroud)
If you would like to update your binary for this app, you can reject this binary …Run Code Online (Sandbox Code Playgroud) 我们有这样的XML:
<Example>
<Node>Some text here
<ChildNode>Child 1</ChildNode>
<ChildNode>Child 2</ChildNode>
</Node>
</Example>
Run Code Online (Sandbox Code Playgroud)
我们XmlDocument用来解析这个.
当我们有"Node"元素的XmlNode时,XmlNode.InnerText返回以下信息:
"Some text hereChild 1Child2"
Run Code Online (Sandbox Code Playgroud)
如何在没有子节点内部文本的情况下获取Node元素的内部文本?我们真的不想使用任何RegEx或字符串拆分来完成此任务.
注意:我们也不想切换到使用不同的类来解析这个XML,这将是一个太多的代码更改.
我正在为WindowsCE CAB文件实现自定义操作,我需要连接LPCTSTR以获取到exe的正确路径.
我的自定义操作接收LPCTSTR作为参数.
所以(伪代码):
extern "C" codeINSTALL_EXIT MYCUSTOMACTION_API Install_Exit(
HWND hwndParent,
LPCTSTR pszInstallDir,
WORD cFailedDirs,
WORD cFailedFiles,
WORD cFailedRegKeys,
WORD cFailedRegVals,
WORD cFailedShortcuts
)
{
if (FALSE == LaunchApp(pszInstallDir + "\\MyApp.exe"))
::MessageBox(hwndParent, L"Could not launch app!", L"Setup", MB_ICONINFORMATION );
return codeINSTALL_EXIT_DONE;
}
Run Code Online (Sandbox Code Playgroud)
这是使用虚构的"+"运算符,我将使用我的标准语言C#.
我在C++方面的经验相对较少.为我的目的附加LPCTSTR的正确方法是什么?LaunchApp方法使用此类型作为参数.
另外,如果我想在MessageBox中显示生成的路径(用于调试目的),是否有快速转换为LPCWSTR的方法?
我们使用Apache和mod_perl开发了一个开放的Web API,您可以在其中传递由Data :: Dumper创建的文本来发出请求.
我们的数据通常如下所示:
$VAR1 = {
'OurField' => 'OurValue'
};
Run Code Online (Sandbox Code Playgroud)
目前,我注意到我们正在使用a eval将数据恢复到Perl哈希服务器端:
my $VAR1;
eval $our_dumper_string;
#$VAR1 is now filled with hash value
Run Code Online (Sandbox Code Playgroud)
这个问题,是一个重大的安全问题.您可以在那里传递恶意perl代码,它将运行服务器端...
有一个更好的方法来安全地获取Data :: Dumper字符串并将其转换为哈希?
这是我的构建错误(带有-v -v -v):
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -ObjC -lsqlite3 -lc++ -Wl,-pie -miphoneos-version-min=5.0 -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk /MyPath/obj/iPhone/Debug/mtouch-cache/MyApp.exe.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/Blendgine.XNA.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/mscorlib.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/MonoGame.Framework.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/OpenTK.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/monotouch.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/System.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/System.Core.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/System.Xml.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/System.Runtime.Serialization.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/Blendgine.Core.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/MonoTouch.FacebookConnect.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/Microsoft.WindowsAzure.Storage.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/System.Xml.Linq.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/GoogleAnalytics.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/Microsoft.WindowsAzure.Messaging.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/MonoTouch.Dialog-1.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/System.Json.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/Newtonsoft.Json.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/Blendgine.GooglePlay.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/PlayGameServices.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/Blendgine.Tapjoy.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/Tapjoy.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/registrar.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/main.armv7.o -force_load /MyPath/obj/iPhone/Debug/mtouch-cache/libFacebookSDK.a -force_load /MyPath/obj/iPhone/Debug/mtouch-cache/libarclite.a -force_load /MyPath/obj/iPhone/Debug/mtouch-cache/libGoogleAnalytics.a -force_load /MyPath/obj/iPhone/Debug/mtouch-cache/WindowsAzureMessaging.a -force_load /MyPath/obj/iPhone/Debug/mtouch-cache/PlayGameServices.a -force_load /MyPath/obj/iPhone/Debug/mtouch-cache/GooglePlus.a -force_load /MyPath/obj/iPhone/Debug/mtouch-cache/GoogleOpenSource.a -force_load /MyPath/obj/iPhone/Debug/mtouch-cache/TapjoyPublisherLibrary.a -o /MyPath/bin/iPhone/Debug/MyAppiOS.app/MyApp -framework CFNetwork -framework AVFoundation -framework Accelerate -framework AddressBook -framework AudioToolbox -framework QuartzCore -framework CoreBluetooth -framework CoreData -framework CoreGraphics -framework CoreImage -framework CoreLocation …Run Code Online (Sandbox Code Playgroud) 我们使用几种不同类型的Ad网络来编写自己的Java绑定.由于Google已经制作了新的"广告"ID,因此所有这些图书馆现在都依赖于Google Play服务.
问题是,在获得最新版本后,我无法正确构建这些绑定项目.我收到有关缺少类的错误,除非将google-play-services.jar(从extras我的Android SDK中的文件夹)添加Reference Jar到项目中.
添加播放服务jar文件后,我收到一个新错误:
missing class error was raised while reflecting com.somepackage.SomeClass : com/google/android/gms/common/GooglePlayServicesRepairableException : Unsupported major.minor version 51.0 JARTOXML
Run Code Online (Sandbox Code Playgroud)
这个错误通常意味着库正在使用Java 7(Xamarin不支持).我该怎么做才能修复这些绑定项目?
c# ×6
.net ×3
xamarin ×3
xamarin.ios ×3
perl ×2
wcf ×2
web-services ×2
.net-2.0 ×1
64-bit ×1
ado.net ×1
android ×1
async-ctp ×1
c ×1
c++ ×1
data-dumper ×1
dirname ×1
gcc ×1
iis ×1
ios ×1
iphone ×1
java-binding ×1
lpcstr ×1
mod-perl ×1
mvvm ×1
objective-c ×1
oledb ×1
parameters ×1
sql-server ×1
string ×1
testing ×1
unit-testing ×1
unix ×1
windows-ce ×1
wpf ×1
xib ×1
xml ×1