我正在尝试使用MonoDevelop进行MVC 3 Razor项目.
我使用Mono 2.10.9/MonoDevelop 3.0.4.7创建了一个新的ASP.net MVC 2项目,并将以下DLL从现有的基于Windows的MVC3项目复制到Mono项目的"bin"目录:
System.Web.Helpers.dll
System.Web.Razor.dll
System.Web.WebPages.Deployment.dll
System.Web.WebPages.dll
System.Web.WebPages.Razor.dll
Run Code Online (Sandbox Code Playgroud)
已将项目设置为使用Mono/.NET 4.默认的索引文件已被删除并替换为Index.cshtml文件.当我执行项目时,我得到以下错误:
The view at '~/Views/Home/Index.cshtml' must derive from WebViewPage, or WebViewPage<TModel>.
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我之前已经完成了这个过程并且使MVC 3页面正常工作.它只是升级Mono(它声称支持Razor ......?),它现在已经不再适合我了.我之前用MVC3创建的项目似乎都在新的Mono版本中编译和运行.
非常感谢,如果有人能指出我可以在这些树林中找到一些木头:)
我知道使用vector是一种在使用C++和STL时存储二进制数据的好方法.但是对于我的单元测试,我想使用const char*C字符串变量来初始化向量.
我正在尝试使用此处找到的代码变体 - 将(void*)转换为std :: vector <unsigned char> - 执行此操作:
const char* testdata = "the quick brown fox jumps over the lazy dog.";
unsigned char* buffer = (unsigned char*)testdata;
typedef vector<unsigned char> bufferType;
bufferType::size_type size = strlen((const char*)buffer);
bufferType vec(buffer, size);
Run Code Online (Sandbox Code Playgroud)
但是VC++编译器对初始化向量的行不满意,说明:
error C2664: 'std::vector<_Ty>::vector(unsigned int,const _Ty &)' : cannot convert parameter 1 from 'char *' to 'unsigned int'
Run Code Online (Sandbox Code Playgroud)
我很欣赏这个问题的极端性,我已经为上面代码的批评做了充分的准备:)
谢谢,克里斯
我为单元测试类开发了一个小辅助函数,它将我的vector<unsigned char>并将其转换回一个const char *.我写了这个,所以我可以将它传递给gtest的ASSERT_STREQ宏进行简单的比较.这里是:
const char * convertVecToChar(std::vector<unsigned char>& source)
{
std::vector<unsigned char>::size_type size = source.size();
char* data = (char*)malloc(sizeof(char) * (size + 1));
memcpy(data, &source[0], size);
data[size] = 0;
return data;
}
Run Code Online (Sandbox Code Playgroud)
这是一个被称为的例子:
ASSERT_STREQ("de", convertVecToChar(somevector));
Run Code Online (Sandbox Code Playgroud)
我认为这是在我打电话时漏水malloc,但是没有delete进一步打电话的话?
有没有更优雅的方法来执行此操作,这不涉及const char *每次ASSERT_STREQ在测试方法中调用时创建单独的变量?
非常感谢所有回复.
克里斯