如何在c#中找到调用方法的全名.我见过解决方案:
但他们只给我顶级水平.考虑这个例子:
namespace Sandbox
{
class Program
{
static void Main(string[] args)
{
test();
}
static void test()
{
var stackTrace = new StackTrace();
var methodBase = stackTrace.GetFrame(1).GetMethod();
Console.WriteLine(methodBase.Name);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这只是输出'Main'如何让它打印'Sandbox.Program.Main'?
在任何人开始询问我为什么需要使用它之前,它是一个我正在处理的简单日志框架.
编辑
添加到Matzi的答案:
这是解决方案:
namespace Sandbox
{
class Program
{
static void Main(string[] args)
{
test();
}
static void test()
{
var stackTrace = new StackTrace();
var methodBase = stackTrace.GetFrame(1).GetMethod();
var Class = methodBase.ReflectedType;
var Namespace = Class.Namespace; //Added finding the namespace
Console.WriteLine(Namespace + …
Run Code Online (Sandbox Code Playgroud) 好吧,这是一个非常怪异的问题,刚刚开发出来,对于我的生活,我不知道从哪里开始.
出于某种原因,我在EF 6中遇到了致命的错误,但这种情况只发生在我转换为.NET Core 1.1之后.这个应用程序在ASP.Net MVC 4上运行没有问题.
对于搜索引擎:
托管调试助手'FatalExecutionEngineError': '运行时遇到了致命错误.错误的地址是0x77c81a09,位于线程0x2520.错误代码是0xc0000005.此错误可能是CLR中的错误,也可能是用户代码的不安全或不可验证部分中的错误.此错误的常见来源包括COM-interop或PInvoke的用户封送错误,这可能会破坏堆栈.```
从我在网上找到的,这是.NET的托管环境之外的问题....这意味着我只是羞于无知.
第一次遇到这个错误时,一个简单的Clean和Build将它固定了一会儿,然后又在同一个地方再次出现.
到目前为止,我在两个地方看到过这个错误:
var vm = new ManagerLogIndexViewModel()
{
Locations = await _db.Locations.ToListAsync(),
};
Run Code Online (Sandbox Code Playgroud)
而且(虽然更复杂):
var results = await _db.InvolvedPersons
.Where(
x =>
x.LastName.ToUpper().Contains(q) || x.FirstName.ToUpper().Contains(q) ||
(x.FirstName + " " + x.LastName).ToUpper().Contains(q))
.Select(x => new {x.FirstName, x.LastName, x.Id})
.GroupBy(x => x.LastName + " " + x.LastName)
.Select(x => x.FirstOrDefault())
.ToDictionaryAsync(x => x.FirstName + " " + x.LastName, x => x.Id.ToString());
Run Code Online (Sandbox Code Playgroud)
它可能与某些事情有关async
吗?
还有其他实体框架调用,一切正常,即使使用异步操作符也是如此.
即使是第一个例子也是在Clean和Build之后工作的.
我真的不知所措.我读过它可能与环境有关.目前,我没有其他可供测试的环境,只有我的开发机器.如果我在另一台机器上运行这个,我会尝试稍后更新.
我在发布之前做了另一个测试: …
这个问题在这里似乎违背了什么,我都经历过.我无法从新的类库中访问控制台.我using System;
在顶部.我在Windows 8上使用visual studio 11.我怀疑这在更新中已经丢失了,所以这意味着我做错了什么.
此外,一旦这个工作,控制台是否可用于便携式类库?
编辑
这里只是我制作的测试文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AdamLib.util.ConsoleSupport
{
class SafeRead
{
private void test()
{
System.Console.Writeline("test"); //Console is not found in system
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是在类库中.
解决
就像我想的那样,这是我的错.
感谢@DarinDimitrov,他指出,使用VS 11和metro,已删除控制台支持以用于metro.因此,为了解决这个问题,我需要使用第二种类库创建一个新项目.有两家上市和我用一个与包括地铁的说明.为了解决这个问题,我不得不在描述中使用没有 metro 的其他类型.
再次感谢所有帮助.
我正在寻找一种加密iPhone上的字符串的方法,将其传递给Web服务器(asp.net c#)并在那里解密以进行处理,并返回响应.
我想我知道如何发送加密的字符串然后返回结果,但我不知道什么加密将在iPhone和asp.net上工作.
有什么建议?示例代码会有所帮助,特别是在iPhone方面,如果可能的话.
我有一个公共类库,包含我的服务器和客户端的许多模型.由于客户端在Xamarin下运行,因此公共库必须是可移植类库(PCL).
在我的服务器中,这些对象是通过AppDomain Remoting/Marshaling传递的,所以根据我的理解,一个对象需要被标记为[Serializable]
或继承自MarshalByRefObject
在PCL中,我不能对我的任何模型做任何这些事情.
我的问题是:如何使这些对象与AppDomain Remoting/Marshaling一起使用并让它们驻留在可移植类库中?
对于我的生活,我无法弄清楚为什么这个NSTimer不会开火.这里是所有相关的代码(至少对我而言)
- (IBAction)connectClick:(id)sender
{
if (connected)
{
NSLog(@"Disconnecting");
[timer invalidate];
timer = nil;
connected = NO;
[Connect setStringValue:@"Connect"];
NSLog(@"Finished\n");
}
else
{
NSLog(@"Connecting");
timer = [NSTimer timerWithTimeInterval:2.0 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];
//[timer fire]; tested this line. same results
[Connect setStringValue:@"a"];
connected = YES;
NSLog(@"Finished\n");
}
}
- (void)timerFireMethod:(NSTimer*)theTimer
{
NSLog(@"Fireing event");
//[self resetRequest];
//[spinner startAnimation:nil];
//[request startAsynchronous];
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了苹果文档和其他问题,但我无法弄清楚.它甚至没有打过timerDireMethod:
一次电话.我听说这可能是由不同的线程引起的,但据我所知,我没有使用多个线程.
欢迎所有想法.
我正在研究一个NuGet软件包,该软件包通过使用.targets
文件为构建过程添加了一个步骤。
我需要从我的NuGet包中引用其他文件,以成功完成构建。
过去,我已经习惯了,$(SolutionDir)packages\MyPackage
并且一切都很好。
但是,我只是在玩VS 2017 RC,我注意到我的软件包安装在全局NuGet软件包目录中,而不是在solution文件夹中。
我可以从MSBuild中使用一些宏,其中包含NuGet packages
文件夹的路径吗?我必须保持与VS2012的兼容性。
一、环境:
\n\nExcel 版本 1905(内部版本 11629.20246 即点即用)\n已连接到 Office 365 专业增强版
\n\nWindows 10 企业版 10.0.16299 内部版本 16299
\n\n我一直在尝试在 Excel 中使用自定义函数 API,但它始终无法加载我的清单。我正在使用 Visual Studio 进行开发,及其处理侧面加载。
\n\n加载项似乎已部分加载,因为任务窗格确实打开并加载,但我的自定义功能均未注册。
\n\n我还从https://github.com/OfficeDev/Excel-Custom-Functions-JS运行了示例项目,但无法加载并出现类似错误。
\n\n我的管理员授予我访问加载项商店的权限,认为这可能是问题的一部分,但这没有帮助。
\n\n我相信有一些 GPO 或设置禁用了自定义函数 API,但我不打算找到有关此类设置的任何文档。我已尽一切努力确认我提供的清单有效,但 Excel 仍声称其无效。
\n\nWeb项目的基本结构如下:
\n\nC:.\n\xe2\x94\x82 Home.html\n\xe2\x94\x82 packages.config\n\xe2\x94\x82 WaveyWeb.csproj\n\xe2\x94\x82 WaveyWeb.csproj.user\n\xe2\x94\x82 Web.config\n\xe2\x94\x82 Web.Debug.config\n\xe2\x94\x82 Web.Release.config\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80dist\n\xe2\x94\x82 functions.html\n\xe2\x94\x82 functions.js\n\xe2\x94\x82 functions.json\n\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80Properties\n AssemblyInfo.cs\n
Run Code Online (Sandbox Code Playgroud)\n\n我已确认网络服务器正在预期位置提供页面。
\n\n这是我正在尝试加载的清单。Visual Studio 不会抱怨它无效,它会检查架构。如果我做出任何无效的更改,它确实会抱怨。
\n\n请注意,~remoteAppUrl
在构建时已正确转换
C:.\n\xe2\x94\x82 Home.html\n\xe2\x94\x82 packages.config\n\xe2\x94\x82 WaveyWeb.csproj\n\xe2\x94\x82 WaveyWeb.csproj.user\n\xe2\x94\x82 Web.config\n\xe2\x94\x82 Web.Debug.config\n\xe2\x94\x82 Web.Release.config\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80dist\n\xe2\x94\x82 functions.html\n\xe2\x94\x82 functions.js\n\xe2\x94\x82 functions.json\n\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80Properties\n AssemblyInfo.cs\n …
Run Code Online (Sandbox Code Playgroud) 我想尝试从我编写的XML阅读器返回一个对象来处理一个具有部分未知结构的文件.
以下是XML的示例.
<xml>
<strings>
<Home>
<Index>
<PreWrapper>
<Left>
<Title>Blah</Title>
<Body>Lorem ipsum dolor sit amet, consec tetuer adipiscing elit. Praesent vestibulum molestie lacus. Aenean nonummy hendrerit mauris. Phasellus porta. Fusce suscipit</Body>
<LinkText>read more</LinkText>
<LinkUrl>#</LinkUrl>
</Left>
<Center>
<Title>Exploit your ideas</Title>
<Body>Lorem ipsum dolor sit amet, consec tetuer adipiscing elit. Praesent vestibulum molestie lacus. Aenean nonummy hendrerit mauris. Phasellus porta. Fusce suscipit</Body>
<LinkText>read more</LinkText>
<LinkUrl>#</LinkUrl>
</Center>
<Right>
<Title>Grow your business</Title>
<Body>Lorem ipsum dolor sit amet, consec tetuer adipiscing elit. Praesent vestibulum molestie lacus. …
Run Code Online (Sandbox Code Playgroud) 我有一个下拉菜单,每次打开时都会动态填充,这是执行它的逻辑:
private void joysticksToolStripMenuItem_DropDownOpening(object sender, EventArgs e)
{
_joysticks = _joystickWrapper.FindDevices(DeviceType.Joystick);
joysticksToolStripMenuItem.DropDownItems.Clear();
foreach (var di in _joysticks)
{
var item = new ToolStripMenuItem(di.ProductName);
item.Checked = di.InstanceGuid == _joystickWrapper.CurrentDeviceInfo.InstanceGuid;
joysticksToolStripMenuItem.DropDownItems.Add(item);
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,这就是我所看到的:
检查位置错误,蓝色区域太宽.
关于在哪里寻找解决此问题的任何想法?整个菜单都是System.Windows.Forms
,整个应用程序中没有自定义可视代码.
我在我当前的机器(Windows 10 Build 9926)和我的开发服务器(Server 2012R2)上尝试了相同的结果.我还将其编译为.NET Framework 4.5和4.5.1
编辑
对于那些感兴趣的人,这里是这个项目的git repo:
c# ×6
.net ×3
objective-c ×2
appdomain ×1
asp.net ×1
asp.net-core ×1
console ×1
encryption ×1
excel ×1
macos ×1
msbuild ×1
nstimer ×1
nuget ×1
office-js ×1
office365 ×1
reflection ×1
winforms ×1
xml ×1