C#-.NET和CF.NET的代码编译器我有一个项目需要使用.NET和Compact.NETFramework进行编译。是否可以创建一个C#编译器来使用这两个框架编译我的项目?某些功能在CF.NETFramework中不可用,所以我自己创建它(创建与.NETFramework具有完全相同的名称和选项的类。如果我使用[CF35]之类的属性来解析这些类,我可以解析项目并且:感谢所有建设性的答案。[编辑]我知道解决方案涉及创建两个引用相同文件的项目。问题是,你应该每次手动编译。另外,当你将文件添加到文件时,你需要打开第二个文件并引用它,这很无聊,根据我们许多人在同一个项目上的工作,我想自动化这部分。似乎有可能吗?[编辑2]除了...资源文件外,一切正常!所以,为了恢复,我有三个项目:如上所述,一切正常,但现在我的问题是使用资源文件。应用它的方式是什么?有什么想法吗?基本思路是对每个框架使用#ifversionCompilerdirectivestodecorateyourcode?#ifCFNET//.netCFcode#else//.netcode#endif从这里你有两个选择:A)如果你想要1个csproj文件,1个带有自定义构建配置的项目文件包含所有内容,您需要手动修改它。由于这是一个msbuild文件,因此这更像是一个msbuild问题。我认为您需要执行以下操作:使用2个平台名称,例如“NET”和“CF”(而不是默认的ANYCPU或x86)定义CF常量(从现在开始编辑csproj):CF根据选择的平台Buildtarget:.targets"/>我不知道CF的目标文件名,因为我没有安装它。它可能位于C:\Windows\Microsoft.NET**.targetsB)2项目文件,每个文件都包含适当的构建配置正如我最初指出的以及一些评论者指出的那样,最好的解决方案是拥有2个项目文件,使它们保持同步。您可以在两个项目文件中包含相同的源文件。所以一个想法是(而不是每次都手动复制文件列表)考虑使用T4模板,保持源文件同步(并且有2个解决方案,这样就不会提示您每次都重新加载整个解决方案)或修改两个csproj文件并像这样使用通配符编译标志:您需要为每个构建配置创建不同的构建配置,并定义自定义标志,如USE_CF。然后用#ifUSE_CF和#endif包装您的自定义类,以便在没有该标志的情况下进行编译时忽略它们。只有一个C#编译器可以为任何平台发出完全相同的IL。参考程序集有什么不同,您必须为CF目标项目使用CF版本,为.NET目标项目使用桌面版本。这需要两个项目。他们可以引用相同的源代码文件。现在添加纯CF源代码文件当然不再是问题。保持项目同步是VS2010中的一项功能。对于Silverlight,它对于CF项目毫无意义,因为它不再支持它。更好的方法是创建一个普通的项目类库(.NET)并添加所有代码。然后创建第二个类库项目(.NETCF),但引用(不是复制,而是引用)第一个项目中的代码文件。然后你最终得到2个DLL,你不必处理烦人的丑陋的编译器指令。您无需额外的工作来维护这两个项目即可获得所需的结果。显然,您需要谨慎对待代码中的内容,因为与.NET相比,.NETCF是有限的。我不知道如何使用visualstudio添加文件引用(快捷方式),但我在记事本中打开proj文件并使用文件的相对路径来包含。我已经将此方法用于.NET/.NETCF以及.NET/Silverlight另外,请查看便携式库工具CTPhttp://visualstudiogallery.msdn.microsoft.com/b0e0b5e9-e138-410b-ad10-00cb3caf4981/?localeName=ko-kr以上就是《C#学习教程:C#–.NETandCF.NETCodeCompiler》分享的全部内容。如果对您有用,需要了解更多C#学习教程,希望您多加关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
