我有一个C#项目(调用它MainProj)引用了其他几个DLL项目.通过将这些项目添加到MainProj引用中,它将构建它们并将其生成的DLL复制到MainProj的工作目录中.
我想做的是将这些引用的DLL放在MainProj工作目录的子目录中,即MainProj/bin/DLLs,而不是工作目录本身.
我不是一个非常有经验的C#程序员,但是来自C++世界,我假设一种方法是删除项目引用并通过路径和文件名显式加载所需的DLL(即在C++中LoadLibrary).然而,我更喜欢做的,如果有办法的话,就是设置某种"引用二进制路径",所以当我构建时它们都被自动复制到这个子目录中(然后从那里引用它们)我需要明确加载每个).这样的事情可能吗?
如果不是,那么C#中首选的方法是什么来实现我所追求的目标(即Assembly.Load/ Assembly.LoadFile/ Assembly.LoadFrom?某些东西AppDomain,或者System.Environment?)
我有一个Facebook登录实现(对于一个网站,使用javascript API)我想要"电子邮件"权限.当用户首次登录时,他们可能会拒绝此权限 - 这很容易通过后续查看/ me/permissions端点来检测.如果我发现他们已经拒绝了,我不会继续登录.到现在为止还挺好.
然后在后续登录期间,为了确保重新提示他们获得该权限,我在登录按钮中包含auth_type ="rerequest"(可以通过xfbml或带有onclick = FB.login(...)的链接进行渲染) ).
虽然这似乎有效,但我的问题是:如果我总是希望获得所需的权限,那么在我的登录按钮中是否有任何不利之处,包括auth_type ="rerequest"? 我在文档中没有看到任何相反的内容,并且似乎没有对未拒绝权限的新用户或用户产生任何不利影响(即,它只会更改登录流程 - 通过重新提示用户是否已经拒绝了什么.我想要的行为是什么.
良好的做法似乎要求我只应该在我确实知道我想重新提示的时候才包括这个,但是为了这个问题,我想知道是否有任何陷阱只是总是包括它.
facebook-graph-api facebook-javascript-sdk facebook-login facebook-graph-api-v2.0 facebook-permissions
Visual Studio在其输出面板中自动显示dll加载/卸载,如下所示:
'DialogAppDEBUG.exe': Unloaded 'C:\WINDOWS\system32\wbem\fastprox.dll'
'DialogAppDEBUG.exe': Unloaded 'C:\WINDOWS\system32\ntdsapi.dll'
'DialogAppDEBUG.exe': Unloaded 'C:\WINDOWS\system32\wldap32.dll'
'DialogAppDEBUG.exe': Unloaded 'C:\WINDOWS\system32\wbem\wbemsvc.dll'
'DialogAppDEBUG.exe': Unloaded 'C:\WINDOWS\system32\wbem\wbemprox.dll'
'DialogAppDEBUG.exe': Unloaded 'C:\WINDOWS\system32\wbem\wbemcomn.dll'
Run Code Online (Sandbox Code Playgroud)
无论如何暂时禁用此功能?当通过DebugOutputString()进行大量调试时,这些消息总是倾向于将我的打印件从面板上移开,我不得不四处寻找它们,这使得这个过程变得更加麻烦.我用Google搜索并搜索了我能想到的所有VS选项,但无济于事......
我是一个Wordpress插件的作者,允许用户使用Facebook登录他们的博客; 它使用旧的REST API来引入登录按钮.通常,包括API通过以下方式完成:
<script type="text/javascript" src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php"></script>
Run Code Online (Sandbox Code Playgroud)
但是,在Facebook引入安全连接(帐户 - >帐户设置 - >帐户安全 - >安全浏览)后,Connect弹出窗口中断.一位插件用户指出可以通过将以上内容替换为以下内容来修复该问题:
<script type="text/javascript" src="https://ssl.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php"></script>
Run Code Online (Sandbox Code Playgroud)
现在每个浏览器都可以正常工作,除了新发布的IE9,它报告了以下两个错误(并且拒绝初始化Facebook API):
SEC7111:HTTPS安全受到损害https://www.facebook.com/extern/login_status.php?api_key=(MY_KEY)&extern=0&channel=(URL_to_my_xd_receiver)
SEC7111:HTTPS安全受到损害https://api.facebook.com/static/v0.4/client_restserver.php?r=1300118768
请注意,托管Facebook Connect按钮的页面不是https,前面两个脚本包含我没有添加 - 通过IE9的开发人员工具查看页面DOM源显示这两个脚本包含在div"FB_HiddenContainer"中,这是在尝试初始化时,Facebook显然是异步插入的.
我在谷歌上发现的有关SEC7111的所有内容都是指试图通过http包含脚本的https页面,但我的问题恰恰相反:页面是http,脚本(由Facebook自动加载)是https.
任何想法都会非常感激,我很难过.如果您想自己玩,可以在我的网站http://www.justin-klein.com上进行.您会注意到"使用Facebook登录"按钮可在除IE9之外的所有浏览器上正确初始化.
根据Facebook的Graph API文档(此处),您可以通过以下URL访问用户个人资料图片的各种大小:
https://graph.facebook.com/(userid)/picture?type=small
https://graph.facebook.com/(userid)/picture?type=large
Run Code Online (Sandbox Code Playgroud)
您会注意到第一个解析为以_t.jpg结尾的URL(小缩略图),第二个结束于_n.jpg(大图像).到现在为止还挺好.同样,我们应该能够像这样查询这些图像:
https://graph.facebook.com/(userid)?fields=picture&type=small
https://graph.facebook.com/(userid)?fields=picture&type=large
Run Code Online (Sandbox Code Playgroud)
后者的格式和预期一样多月,直到刚刚前几天,当它突然开始完全忽略了"类型"参数-现在一切都解决在_q.jpg结束的图像,这是默认的,如果没有"型"是指定.结果,我再也找不到在PHP中查询大图像的方法(我的真正问题).它过去像这样工作:
$pic = $facebook->api('/me', array('fields' => 'picture', 'type' => 'large'));
Run Code Online (Sandbox Code Playgroud)
......但如上所述,"类型"已经自发地被忽略了.我花了几个小时搜索他们的文档,但未能找到任何改变的参考,或者应该做的"新"方式 - 任何指针都会非常感激...
编辑:
以下所有工作都没有(不返回任何内容):
$pic = $facebook->api('/me/picture', array('type' => 'large'));
$pic = $facebook->api('/(my_uid)/picture', array('type' => 'large'));
$pic = $facebook->api('/me/picture/?type=large');
$pic = $facebook->api('/(my_uid)/picture/?type=large');
Run Code Online (Sandbox Code Playgroud)
基本上,由于Facebook几天前破坏了东西,似乎没有办法从PHP获得非默认图片大小.您可以从Graph API Explorer(此处)自己尝试一些调用.
其他相关/相关链接:
http://stackoverflow.com/questions/2978761/facebook-graph-api-will-not-give-me-picture-data
http://stackoverflow.com/questions/7718704/requesting-picture-for-event
Run Code Online (Sandbox Code Playgroud) 我有一个存储库的子文件夹,我试图将其拆分为子树。首先,我按照此过程(/sf/answers/3078972851/)创建一个仅包含与子文件夹相关的提交(包括重命名)的分支。我确认分支的提交日志看起来符合预期。
接下来,我为该子项目创建一个新的存储库:
git init --bare \\nas\git\FPF.git
git push ssh://myserver.com/~/FPF.git branch-fpf:master
Run Code Online (Sandbox Code Playgroud)
然后我从父存储库中删除子文件夹并将其重新添加为子树:
git rm -r htdocs/wp-content/plugins/fpf
git add -A
git commit -am "Removing folder to re-add as subtree"
git remote add fpf ssh://myserver.com/~/FPF.git
git subtree add --prefix=htdocs/wp-content/plugins/fpf fpf master --squash
Run Code Online (Sandbox Code Playgroud)
现在,作为快速健全性检查,我将获取远程子树存储库的副本(当然在另一个文件夹中):
git clone ssh://myserver.com/~/FPF.git
Run Code Online (Sandbox Code Playgroud)
和:
git subtree push --prefix=htdocs/wp-content/plugins/fpf fpf master
Run Code Online (Sandbox Code Playgroud)
因为我在添加子树和推送之间没有提交任何更改,所以我希望没有任何新内容可以推送。但事实证明,如果我再次克隆 FPF.git,我发现它现在有大量额外的提交 - FPF 已经变大很多倍,提交日志现在反映了许多仅适用于外部文件的提交子树。
为什么git subtree push会推送不适用于子树的提交?
编辑 1:额外提交是来自主(父)存储库的所有提交,从第一次 FPF 提交之前开始并返回到时间开始。换句话说:如果我在执行 git 子树推送之前和之后比较 FPF 子树存储库的日志,它们是相同的,直到我到达“预推送”克隆日志的底部。从那里开始,“推后”克隆的日志一直持续到父项目的第一次提交。Git 子树推送有效地附加了父级的完整先前历史记录。
编辑2:我决定放弃git-subtree。我发现了https://github.com/ingydotnet/git-subrepo,它不仅可以正常工作,而且解决了许多子树的缺点(最明显的是非常慢的推送)。将此问题留在这里,以防其他人提出答案或遇到同样的问题,但为了简化一点,这里有一组完整的从头到尾的命令来展示该问题。与上面的区别:这并不是从多个过滤器分支嫁接在一起形成的分支开始;它只是执行最简单的单个子树分割的情况:
cd MainProjectRepo
git subtree …Run Code Online (Sandbox Code Playgroud) 截至 2021 年 9 月,Lets Encrypt 的旧根证书已过期(请参阅: https: //letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/)。这导致使用 axios 的节点应用程序在使用 LetsEncrypt 证书连接到 API 时失败。它表明证书已过期。由于我的 Linux 系统运行的是 OpenSSL 1.1.1(Lets Encrypt 声明与他们的新链兼容),我的假设是 Node 必须使用其捆绑的过时 OpenSSL,它不支持新证书。不幸的是,节点应用程序只能在节点 8.x 上运行(这是通过 npm n 完成的)。
所以问题是:我可以告诉 axios 覆盖/扩展内置根证书,使其能够与 LetsEncrypt 的新链正常工作,即使在过时版本的 Node 上运行也是如此?
基于如何配置 axios 使用 SSL 证书?,我尝试从https://letsencrypt.org/certificates/下载 ISRG Root X1 pem ,然后将其加载,如下所示:
const httpsAgent = new https.Agent({ ca: fs.readFileSync('./isrgrootx1.pem'),
cert: fs.readFileSync('./isrgrootx1.pem') });
//...
const response = await axios.post(fullEndpoint, {httpsAgent});
Run Code Online (Sandbox Code Playgroud)
然而,它似乎没有效果——所有 Axios 的连接仍然失败,说证书已过期。我觉得这一定非常接近解决方案,但没有任何运气。任何指示将不胜感激。
我正在努力本地化我用C#编写的应用程序.
一切似乎都很好用,使用卫星资源程序集来翻译每个表单的字符串(根据本教程:http://msdn.microsoft.com/en-us/library/y99d1cd3%28VS.71%29.aspx)
但是,应用程序最终将需要相当多的语言,这意味着我的工作目录中存在大量目录(即/ zh-tw,/ zh-cn,/ fr-FR,/ ja-JP等).我想通过在/ languages或/ resources子目录中找到所有这些来清理它(换句话说,设置"附属程序集的基本路径").但我搜索了高低,并且无法找到任何方法来定制这些附属组件的位置.
任何提示将非常感谢!
当 NODE_ENV 设置为“test”时,Node-config 的 custom-environment-variables.json 似乎不会覆盖 default.json 中的值。这是一个非常简单的配置:
配置/默认.json:
{
"jwtPrivateKey": "defaultkey"
}
Run Code Online (Sandbox Code Playgroud)
配置/自定义环境变量.json:
{
"jwtPrivateKey": "JWTPRIVATEKEY"
}
Run Code Online (Sandbox Code Playgroud)
配置/测试.json:
{}
Run Code Online (Sandbox Code Playgroud)
应用程序.js:
console.log('NODE_ENV': + process.env.NODE_ENV);
console.log('Env: ' + process.env.JWTPRIVATEKEY);
console.log("Config: " + config.get('jwtPrivateKey'));
Run Code Online (Sandbox Code Playgroud)
这按预期工作:我得到 NODE_ENV=undefined (因此节点配置将默认为“development”),接下来的两行都打印环境变量中设置的正确值。但是,如果我尝试使用 Jest 运行一个简单的测试并打印相同的内容:
测试/some.test.js:
test('Some Test', () => {
console.log('NODE_ENV:' + process.env.NODE_ENV);
console.log('Env: ' + process.env.JWTPRIVATEKEY);
console.log("Config: " + config.get('jwtPrivateKey'));
});
Run Code Online (Sandbox Code Playgroud)
我得到 NODE_ENV=test, Env=环境变量中设置的正确值...但 Config=defaultKey。
换句话说:虽然它显示环境变量设置为正确的值,但node-config似乎没有通过custom-environment-variables.json将其拉入。
这是一个错误吗?我已经查阅了文档,但无法找到造成这种差异的任何原因。
我正在使用curl for windows(http://www.confusedbycode.com/curl/)与jq(http://stedolan.github.io/jq/)一起通过批处理文件与web api进行交互.我遇到的看似简单的问题是无论我做什么,我都无法抑制JQ的"状态"输出.特别是,它总是输出"进度状态",如:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 116 100 99 100 17 908 155 --:--:-- --:--:-- --:--:-- 908
Run Code Online (Sandbox Code Playgroud)
简化的示例批处理文件将是:
@echo off
@curl.exe -H "Content-Type: application/json" -d '{\"cmd\":\"login\"}' http://localhost:80/json | jq -r .session > sess.txt
Run Code Online (Sandbox Code Playgroud)
请注意,jq确实按预期运行 - 我只需要让它以静默方式运行.它似乎忽略了@echo,我在手册中找不到任何开关来禁用此输出.
有任何想法吗...?
非常感谢提前:)
c# ×2
facebook ×2
.net ×1
axios ×1
batch-file ×1
curl ×1
delay-load ×1
dll ×1
git ×1
git-subtree ×1
jq ×1
json ×1
lets-encrypt ×1
localization ×1
node-config ×1
node.js ×1
openssl ×1
panel ×1
php ×1
reference ×1
resources ×1