我的Windows应用程序包含4个针对Windows 8.1的项目和几个测试项目:
"... App.Core"项目以前是Windows 8项目,该项目也针对.Net 4.5框架.但正因为如此,有一些无法使用的异步功能.
我们现在需要完全异步能力,并且该项目仅针对Windows8.1重新定位.
然而,这样做打破了"... App.Core.Tests"项目,这是一个.Net 4.5测试项目.它正在引用App.Core项目,现在引用已被破坏.
问题:有没有办法从Test项目中定位Windows 8.1项目(无需创建新的测试项目)?测试项目有相当多的测试,文件夹和nuget包引用,这将是转移到新项目的主要痛苦.
如果我现在尝试添加引用,我会得到令人讨厌的简洁"无法添加项目'MyProject.App.Core'的引用."
此外,重新定位App.Core项目意味着更新其他8.1项目的目标,并为每个项目重新安装每个nuget包.这就是为什么我宁愿用另一种方式解决这个问题......如果有的话.
.Net 4.5项目是否有一些限制能够引用Windows 8.1项目?或许我只是做错了什么.
更新
根据以下来自@PiLHA的评论,我添加了.NET 4.5.1作为目标.它将库类型从"Windows 8.1"更改为"Portable",但它打破了所有异步调用.
注意:我将Microsoft.Bcl v1.1.10,Microsoft.Bcl.Async v1.0.68和Microsoft.Bcl.Build v1.0.21作为nuget包添加到"MyProject.App.Core"项目中.
我有几个后端 Salesforce (SF) 页面,它们具有很长的下拉列表(例如最多 1,000 个选项),并且我想在 Chrome 书签中使用 JS 代码将过滤器框添加到页面上的任意 SELECT 中(代码如下)。我认为问题是因为我想要访问的节点位于名为 的自定义 HTML 元素内force-aloha-page
。
就我而言,我想要访问的第一个元素是自定义元素内的 IFRAME。(这不是一个跨站点安全问题,因为即使来源不好,JS 仍然会获得 IFRAME,只是其中没有任何内容。)
\n\n例如,我可以检查代码并查看自定义 HTML 元素、查看 iframe,并且可以在页面上查看 iframe 的内容。如果我只是将节点转储到控制台,它会显示 JS 无法访问的 DOM 元素:
\n\n\n\n\n\n
\n- \n
document.getElementsByTagName("FORCE-ALOHA-PAGE")[0]
- \n
<force-aloha-page data-data-rendering-service-uid=\xe2\x80\x8b"203" data-aura-rendered-by=\xe2\x80\x8b"505:\xe2\x80\x8b0" force-alohapage_alohapage-host>\xe2\x80\x8b<div force-alohapage_alohapage class=\xe2\x80\x8b"iframe-parent slds-template_iframe slds-card">\xe2\x80\x8b<iframe force-alohapage_alohapage height=\xe2\x80\x8b"100%" width=\xe2\x80\x8b"100%" scrolling=\xe2\x80\x8b"yes" allowtransparency=\xe2\x80\x8b"true" name=\xe2\x80\x8b"vfFrameId_1569557364522" title=\xe2\x80\x8b"Page Configuration" allowfullscreen=\xe2\x80\x8b"true" lang=\xe2\x80\x8b"en-US" allow=\xe2\x80\x8b"geolocation *;\xe2\x80\x8b microphone *;\xe2\x80\x8b camera *">\xe2\x80\x8b\xe2\x80\xa6\xe2\x80\x8b</iframe>\xe2\x80\x8b</div>\xe2\x80\x8b</force-aloha-page>\xe2\x80\x8b
我可以看到元素内部的div
和。但是,如果我尝试访问 iframe,就会发生这种情况:iframe
force-aloha-page
\n\n
- \n
document.getElementsByTagName(\'IFRAME\')
- \n
0
- \n …
document.querySelectorAll("iframe")
我正在尝试向我的数据库日志目标添加一些自定义.在我的NLog.config中我有这个:
<target name="DatabaseExample1" xsi:type="Database"
dbProvider="System.Data.SqlClient"
dbDatabase="${event-context:item=dbDatabase}"
dbUserName="${event-context:item=dbUserName}"
dbPassword="${event-context:item=dbPassword}"
dbHost="${event-context:item=dbHost}"
commandText="${event-context:item=commandText}">
</target>
Run Code Online (Sandbox Code Playgroud)
在我的C#代码中我有这个:
protected override void updateBeforeLog(LogEventInfo info)
{
info.Properties["dbDatabase"] = "TempDB";
info.Properties["dbUserName"] = "username";
info.Properties["dbPassword"] = "password";
info.Properties["dbHost"] = "SERVER\\SQLSERVER";
info.Properties["commandText"] = "exec InsertLog @LogDate, @LogLevel, @Location, @Message";
info.Parameters = new DatabaseParameterInfo[] {
new DatabaseParameterInfo("@LogDate", Layout.FromString("${date:format=yyyy\\-MM\\-dd HH\\:mm\\:ss.fff}")),
new DatabaseParameterInfo("@LogLevel", Layout.FromString("${level}")),
new DatabaseParameterInfo("@Location", Layout.FromString("${event-context:item=location}")),
new DatabaseParameterInfo("@Message", Layout.FromString("${event-context:item=shortmessage}"))
};
log.Log(info);
}
Run Code Online (Sandbox Code Playgroud)
但是我收到一条SQL错误,上面写着"必须声明标量变量"@LogDate"".
属性正常,因为连接成功.但由于某种原因,参数不会"绑定"命令中的标量变量.
如果我在NLog.config文件中手动创建参数,它可以完美地工作:
<target name="DatabaseExample1" xsi:type="Database"
dbProvider="System.Data.SqlClient"
dbDatabase="${event-context:item=dbDatabase}"
dbUserName="${event-context:item=dbUserName}"
dbPassword="${event-context:item=dbPassword}"
dbHost="${event-context:item=dbHost}"
commandText="${event-context:item=commandText}">
<parameter name="@LogDate" layout="${date:format=yyyy\-MM\-dd HH\:mm\:ss.fff}" />
<parameter name="@LogLevel" layout="${level}" /> …
Run Code Online (Sandbox Code Playgroud) 我有一个浮点数组:
float[] samples32array
Run Code Online (Sandbox Code Playgroud)
我需要将其转换为二进制文件,以便我可以在 matlab 中读取它。
有什么办法可以做到这一点吗?
我发现我经常写这样的代码:
public void some_callback(object sender, SomeArgs args)
{
if (sender is ObjectA)
{
var objA = sender as ObjectA;
//do something
}
else if (sender is ObjectB)
{
var objB = sender as ObjectB;
//do something else
}
}
Run Code Online (Sandbox Code Playgroud)
或类似地:
public void some_callback(object sender, SomeArgs args)
{
var objA = sender as ObjectA;
if (objA != null)
{
//do something
}
var objB = sender as ObjectB;
if (objB != null)
{
//do something else
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道的是,如果有一种快捷方式可以在C#中处理这个问题?有点像:
public void …
Run Code Online (Sandbox Code Playgroud) 这是我对webservice -JsonWebService.asmx文件的ajax调用
$.ajax({
type: "POST",
async: false,
url: "/blkseek2/JsonWebService.asmx/GetList",
data: keyword2,
contentType: "application/xml; charset=utf-8",
success: ajaxCallSucceed,
dataType: "xml",
failure: ajaxCallFailed
});
Run Code Online (Sandbox Code Playgroud)
这是我成功的方法,我将如何在成功方法中捕获xml响应
function ajaxCallSucceed(response) {
alert(response.d);
/// here i need to write code to capture response xml doc file
}
Run Code Online (Sandbox Code Playgroud)
这是我在webservice jsonwebservice.asmx.cs文件中编写的代码,我能够完全创建xml成功,但我发现很难将xml返回给ajax调用
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public XmlDocument GetList(string keyword1, string streetname, string lat, string lng, string radius)
{
XmlDocument xmldoc= CreateXML( keyword1,streetname,lat,lng,radius);
return xmldoc;
}
Run Code Online (Sandbox Code Playgroud)