我刚刚和MSBuild碰到了一个奇怪的情况.有一个解决方案有三个项目:LibX,LibY和Exe.exe引用LibX.LibX反过来引用了LibY,有一些内容文件,还引用了第三方库(在GAC和本地lib文件夹中安装了几个预构建的程序集).第三方库被标记为"复制本地"("私有")并出现在LibX项目的输出中,如LibY的输出和LibX的内容文件那样.现在,Exe项目的输出有LibX项目输出,LibX项目的内容文件,LibY项目输出(来自LibX),但没有第三方库的程序集.
现在我通过直接在Exe项目中引用第三方库来解决这个问题,但我觉得这不是一个"正确"的解决方案.
以前有人有这个问题吗?
是否可以在不提供用户名/密码的情况下冒充用户?基本上,我想CSIDL_LOCAL_APPDATA使用该ShGetFolderPath()功能获取用户(而不是当前用户).我目前拥有的只是该用户的SID.
如何确定远程驱动器是否有足够的空间让我在.Net中使用C#上传给定文件?
这是我必须使用的常见代码模式:
class foo {
public:
void InitMap();
void InvokeMethodsInMap();
static void abcMethod();
static void defMethod();
private:
typedef std::map<const char*, pMethod> TMyMap;
TMyMap m_MyMap;
}
void
foo::InitMap()
{
m_MyMap["abc"] = &foo::abcMethod;
m_MyMap["def"] = &foo::defMethod;
}
void
foo::InvokeMethodsInMap()
{
for (TMyMap::const_iterator it = m_MyMap.begin();
it != m_MyMap.end(); it++)
{
(*it->second)(it->first);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我发现处理映射的顺序(在for循环中)可能因构建配置是Release还是Debug而有所不同.似乎发布版本中发生的编译器优化会影响此顺序.
我认为通过begin()在上面的循环中使用,并在每次方法调用后递增迭代器,它将按初始化顺序处理映射.但是,我还记得读过地图是作为哈希表实现的,并且无法保证顺序.
这尤其令人讨厌,因为大多数单元测试都是在Debug构建上运行的,并且在外部QA团队开始测试之前通常不会发现奇怪的顺序依赖性错误(因为它们使用了Release版本).
谁能解释这种奇怪的行为?
我一直在用RhinoMocks做一些嘲弄,它需要将模拟的方法变成虚拟的.这很好,除了我们有一个自定义框架,其中包含我想要模拟的方法,这些方法当前没有标记为虚拟.
我不能预见到使这些方法变得虚拟的任何问题,但我想知道使方法虚拟的一些潜在危险我应该注意什么?
http://en.wikipedia.org/wiki/Diamond_problem
我知道这意味着什么,但我可以采取哪些措施来避免它?
从GetResponseStream读取HTTP响应的最佳方法是什么?
目前我正在使用以下方法.
Using SReader As StreamReader = New StreamReader(HttpRes.GetResponseStream)
SourceCode = SReader.ReadToEnd()
End Using
Run Code Online (Sandbox Code Playgroud)
我不太确定这是否是读取http响应的最有效方法.
我需要输出为字符串,我看过一篇文章有不同的方法,但我不是很好,如果它是一个很好的.在我的测试中,代码在不同的网站中存在一些编码问题.
你如何阅读网络回复?
.net ×2
c# ×2
c++ ×2
dependencies ×1
filesystems ×1
http ×1
mocking ×1
msbuild ×1
networking ×1
ruby ×1
security ×1
sql ×1
stl ×1
stream ×1
unit-testing ×1
visual-c++ ×1
winapi ×1