任何人都知道如何在visual studio 2008中关闭代码折叠?我的一些同事喜欢它,但我个人总是希望看到所有代码,并且永远不希望代码折叠在视线之外.我想要一个设置,这意味着我的Visual Studio副本永远不会折叠#regions或功能体.
我正在使用OleDb从包含许多工作表的excel工作簿中读取.
我需要阅读工作表名称,但我需要按照电子表格中定义的顺序进行操作; 所以如果我有一个看起来像这样的文件;
|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
\__GERMANY__/\__UK__/\__IRELAND__/
Run Code Online (Sandbox Code Playgroud)
然后我需要得到字典
1="GERMANY",
2="UK",
3="IRELAND"
Run Code Online (Sandbox Code Playgroud)
我尝试过使用OleDbConnection.GetOleDbSchemaTable(),这给了我名单,但按字母顺序对它们进行排序.字母排序意味着我不知道特定名称对应于哪个表格编号.所以我得到了;
GERMANY, IRELAND, UK
Run Code Online (Sandbox Code Playgroud)
这改变了UK和的顺序IRELAND.
我需要对它进行排序的原因是我必须让用户按名称或索引选择一系列数据; 他们可以要求"从德国到爱尔兰的所有数据"或"从表1到表3的数据".
任何想法将不胜感激.
如果我可以使用办公室互操作课程,这将是直截了当的.不幸的是,我不能,因为互操作类在非交互式环境(如Windows服务和ASP.NET站点)中不能可靠地工作,所以我需要使用OLEDB.
家伙.我正试图找到一个问题最优雅的解决方案,并想知道python是否内置了我正在尝试做的事情.
我正在做的是这个.我有一个列表,A我有一个函数f,它接受一个项目并返回一个列表.我可以使用列表理解来转换所有内容A;
[f(a) for a in A]
Run Code Online (Sandbox Code Playgroud)
但这会返回列表清单;
[a1,a2,a3] => [[b11,b12],[b21,b22],[b31,b32]]
Run Code Online (Sandbox Code Playgroud)
我真正想要的是得到扁平化的清单;
[b11,b12,b21,b22,b31,b32]
Run Code Online (Sandbox Code Playgroud)
现在,其他语言都有它; 它传统上称为flatmap函数式编程语言,而.Net称之为SelectMany.python有类似的东西吗?有没有一种巧妙的方法来映射列表上的函数并使结果变平?
我试图解决的实际问题是这个; 从目录列表开始,找到所有子目录.所以;
import os
dirs = ["c:\\usr", "c:\\temp"]
subs = [os.listdir(d) for d in dirs]
print subs
Run Code Online (Sandbox Code Playgroud)
currentliy给了我一个列表列表,但我真的想要一个列表.
我得到了一个Windows服务,它引用了一个只能在32位上运行的COM组件.我的机器是x64,因此服务尝试启动,无法创建COM组件,并且死机.
我没有源,只有.exe文件.有没有办法强制服务在win64机器上以32位模式启动?
我正在开发一个自定义的MSBuild任务,它可以构建一个ORM层,并在项目中使用它.我受到Visual Studio保留MSBuild任务DLL而不放手的行为的阻碍.
我想像这样组织我的解决方案;
My Solution
|
+- (1) ORM Layer Custom Task Project
| |
| +- BuildOrmLayerTask.cs // here's my task
|
+- (2) Business Logic Project // and here's the project that uses it.
|
+- <UsingTask TaskName="BuildOrmLayerTask" AssemblyFile="$(TaskAssembly)" />
Run Code Online (Sandbox Code Playgroud)
但是,当项目(2)构建时,它会从项目(1)锁定到程序集.所以现在我无法在不关闭解决方案并重新打开它的情况下再次构建项目(1).
有没有什么方法可以组织事情,以便自定义构建任务不被Visual Studio锁定?
有没有人知道如何XmlDocument.LoadXml()在不使用try/catch块之类的东西的情况下检查字符串是否包含格式良好的XML ?我有输入可能是也可能不是XML,我希望代码能够识别输入可能不是XML而不依赖于try/catch,速度和非特殊情况不应该提高的一般原则例外.我目前有代码执行此操作;
private bool IsValidXML(string value)
{
try
{
// Check we actually have a value
if (string.IsNullOrEmpty(value) == false)
{
// Try to load the value into a document
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(value);
// If we managed with no exception then this is valid XML!
return true;
}
else
{
// A blank value is not valid xml
return false;
}
}
catch (System.Xml.XmlException)
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
但它似乎不应该需要try/catch.异常是在调试期间导致快乐的地狱,因为每次我检查字符串时调试器都会在这里打破,"帮助"我解决我的麻烦问题.
我在TypeScript中编写了一个笨拙的任务.我正在尝试翻译我在JavaScript中已有的东西.
因此,当grunt运行任务时,它会运行一个函数.当它运行时,grunt设置this为具有有用属性的对象,就像jQuery this使用您正在处理的元素重载一样.我可以访问有用的属性,如this.files;
grunt.registerMultiTask('clean', function() {
this.files.forEach(function(f) { Delete(f); });
});
Run Code Online (Sandbox Code Playgroud)
所以,"删除所有文件this.files".
但是,在TypeScript中,我不知道你是否可以"提示" this某个特定类型的编译器,所以我没有得到intellisense.如何告诉TypeScript考虑this使用其他类型?
我正在定制一个.csproj项目,在主构建之前运行一些自定义任务.但是,我根本无法执行任务.
我取消注释文件中的<Target Name="BeforeBuild" />元素.csproj并添加了一个简单的Message任务,但是当我构建时,消息没有出现在我的输出中,所以看起来任务没有运行.所以这个片段不输出消息;
清单1:没有消息出现
<Target Name="BeforeBuild">
<Message Text="About to build ORM layer" Importance="normal" />
</Target>
Run Code Online (Sandbox Code Playgroud)
但是,如果我搞砸了一些属性,我可能会.csproj完全无法执行;
清单2:MSBuild配置错误
<Target Name="BeforeBuild">
<Message Text="About to build ORM layer" XXImportance="normal" />
</Target>
Run Code Online (Sandbox Code Playgroud)
注意XXImportance属性.我得到的构建错误是
My.csproj(83,46): error MSB4064: The "XXImportance" parameter is not supported by the "Message" task. Verify the parameter exists on the task, and it is a settable public instance property.
Run Code Online (Sandbox Code Playgroud)
这表明正在解析XML,Message已找到该类,并且该类正在反映可用属性.
为什么这个任务不会执行?
我正在使用3.5框架.
更新1:在@Martin的建议下,我试图在控制台上运行MSBuild,并得到了这个错误;
c:\path\to\my.csproj(74,11): error MSB4019: The imported …Run Code Online (Sandbox Code Playgroud) 我正在将ListView绑定到对象列表,就像这样;
<ListView
ItemsSource="{ Binding Path=. }"
ItemTemplate="{DynamicResource EventTemplate}">
Run Code Online (Sandbox Code Playgroud)
我绑定了一个声明两个属性的对象;
string DisplayName { get; }
System.Drawing.Image Image { get; set; }
Run Code Online (Sandbox Code Playgroud)
我想填充一个,DataTemplate但我无法弄清楚如何; 如果我在模板中这样做;
<StackPanel Orientation="Horizontal">
<Image Source="{ Binding Path=Image }" />
<TextBlock Text="{ Binding Path=DisplayName }" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
文本出现但图像没有.我究竟做错了什么?调试输出显示
System.Windows.Data Error: 1 : Cannot create default converter
to perform 'one-way' conversions between types
'System.Drawing.Image' and 'System.Windows.Media.ImageSource'.
Consider using Converter property of Binding.
BindingExpression:Path=Image; DataItem='RealElement'
(HashCode=54308798); target element is 'Image' (Name='');
target property is 'Source' (type 'ImageSource')
Run Code Online (Sandbox Code Playgroud) 在Visual Studio中,您可以卸载项目,并在构建解决方案时(右键单击/构建),不会构建卸载的项目.但是,当您从命令行运行MSBuild时,就像这样;
C:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe
"$slnFile" /t:build /p:Configuration=Debug /verbosity:minimal
Run Code Online (Sandbox Code Playgroud)
该项目已建成.有没有办法让MSBuild尊重在Visual Studio中卸载的项目?
情况是我们有一个包含许多项目的解决方案.其中一个需要特殊的软件来构建,它存在于我们的构建机器上,但不存在于所有开发人员机器上.这意味着我无法进行直接的命令行构建,或者在遇到流氓项目时失败.
有任何想法吗?
[编辑:MSBuild必须能够这样做,因为Visual Studio使用MSBuild来进行构建.命令行没有VS做什么?]
c# ×6
msbuild ×3
.net ×1
64-bit ×1
binding ×1
command-line ×1
csproj ×1
excel ×1
image ×1
msbuild-task ×1
oledb ×1
outlining ×1
prebuild ×1
python ×1
server-side ×1
text-editor ×1
typescript ×1
well-formed ×1
wpf ×1
xaml ×1
xml ×1