小编HaM*_*ter的帖子

如何在.Net 2.0中的sectionGroup applicationSettings中按名称获取所有部分

这是我的想法:

我希望一个小的可执行文件有一个app.config文件,其中有多个部分位于sectionGroup"applicationSettings"下(不是"appSettings",我不需要写入该文件).每个部分都有一个名称,对应于一个应该加载的模块.

这是一个例子:

   <configuration>
     <configSections>
       <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
         <section name="Executable" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
         <section name="FirstModule" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
       </sectionGroup>
     </configSections>
     <applicationSettings>
       <Executable>
         <setting name="MyFirstSetting" serializeAs="String">
           <value>My awesome feature setting</value>
         </setting>
       </Executable>
       <FirstModule path="path to the modules assembly">
         <setting name="ImportantSettingToTheModule" serializeAs="String">
           <value>Some important string</value>
         </setting>
       </FirstModule>
     </applicationSettings>
   </configuration>
Run Code Online (Sandbox Code Playgroud)

现在,如果我定义FirstModule部分,我希望我的应用程序加载其程序集.如果未定义该部分,则不应加载该模块.这不仅适用于一个模块,也适用于尚未定义的模块.

所以我基本上需要在运行时找出已定义的部分.我该怎么办?

此外,我希望它成为一个可移植的可执行文件(=它也必须在Mono上运行),它向后兼容.NET 2.0.

看看GitHub上的项目(目前在此提交中)可能会很有趣.

c# mono configuration configurationsection .net-2.0

13
推荐指数
1
解决办法
2万
查看次数

在gradle中配置cpp源

我在Qt之上设置了一个项目(因此源代码是用C++编写的),我想尝试使用Gradle进行自动构建.我花了一些时间进入配置多项目构建的细节(有一个可执行文件以及两个库),现在我想告诉cpp-exe和cpp-lib插件我的源代码树是如何构成的.

我已经设置了一个应该打印所有源集的任务(至少应该有默认值?),它看起来像这样:

task projectinfo {
description = "Informations about the current project"
group = INFORMATIONS_GROUP

doFirst {
    task -> print ("""${task.project.sourceSets.all}""")
}
Run Code Online (Sandbox Code Playgroud)

如果我运行此任务,Gradle会告诉我该项目没有属性"sourceSets".该插件的文档告诉我可以自定义源位置,但不能如何自定义源位置.

所以我的问题是:如何告诉Gradle cpp插件使用哪些源文件.如果有关于该cpp插件的任何文档,除了它的API文档和Gradle用户指南之外也会有所帮助.

c++ build-automation gradle

7
推荐指数
1
解决办法
6869
查看次数

找到一个字节中的设置位位置

当我遇到这个问题时,我正在努力创建一个稀疏的八叉树实现,就像nVidia ("Efficient Sparse Voxel Octrees")的人们为他们的体素做的那样:

我有一个字节类型的字节(只有8位)告诉我八叶树的叶子在哪里(1表示叶子,0表示没有叶子,8个节点附着 - > 8位).我现在要做的是返回叶子位置的数组.我当前的实现是使用while循环来确定是否设置了LSB.之后输入移1.所以这就是我这样做的方式:

int leafposition = _leafmask & _validmask;
int[] result = new int[8]; 
int arrayPosition = 0;
int iteration = 0;
while ( leafposition > 0 )
{
   iteration++; //nodes are not zero-indexed ... ?
   if ( (leafposition & 1) == 1 ) // LSB set?
   {
     result.SetValue( iteration, arrayPosition );
     arrayPosition++;
   };
   leafposition = leafposition >> 1;
}
return result;
Run Code Online (Sandbox Code Playgroud)

这看起来并不优雅,有两件令人不安的事情:

  • 这个while循环模仿for循环
  • 结果数组很可能小于8个值,但调整大小是昂贵的

我希望结果与[2,4,6]42 相似(0010 1010).

任何人都可以提供更优雅的解决方案仍然可读吗? …

c# bit-manipulation bit-shift octree

2
推荐指数
1
解决办法
1407
查看次数