【问题标题】:is there any way to compile some specific forms of C# project有什么方法可以编译某些特定形式的 C# 项目
【发布时间】:2014-11-25 09:10:29
【问题描述】:

我正在开发一个包含八个窗体的 Windows 窗体应用程序,并且我想要编译后的应用程序的不同版本。例如:

演示版:我要form1、form2、form4、form5
完整版:我要form1、form3、form4、form6、form8

我该怎么做?

【问题讨论】:

  • 制作一个额外的项目用于演示发布,将 2 个项目文件 (.csproj) 放在同一个文件夹中,然后添加您想要的文件 (form1..etc)包含在新项目的演示版本中。
  • “两个不同的项目文件,一个包含代码文件的子集”是否可行?
  • 告诉我们您是如何定义您的应用程序为 Demo 还是 Full 的?你有序列号吗?注册表项?
  • @MarcGravell 我更喜欢有一个项目供以后更新
  • @RonaldEstacion 我确实有序列号等,但我真的不能依赖序列号和注册表项。

标签: c#


【解决方案1】:

您可以通过编辑 .csproj 文件在单个项目中实现这一点。只需根据项目Configuration 将表单移动到具有Condition 属性的单独ItemGroup 元素:

<ItemGroup Condition=" '$(Configuration)' == 'Demo' ">
  <Compile Include="Form1.cs">
    <SubType>Form</SubType>
  </Compile>
  <Compile Include="Form1.Designer.cs">
    <DependentUpon>Form1.cs</DependentUpon>
  </Compile>
</ItemGroup>

<ItemGroup Condition=" '$(Configuration)' == 'Full' ">
  <Compile Include="Form2.cs">
    <SubType>Form</SubType>
  </Compile>
  <Compile Include="Form2.Designer.cs">
    <DependentUpon>Form2.cs</DependentUpon>
  </Compile>
</ItemGroup>

此外,要使这些条件生效,您还需要使用解决方案的配置管理器创建 DemoFull 配置。

【讨论】:

  • 添加一个小问题,我们之前在 VB 应用程序中遇到过。如果您在应用程序的 OnCreateMainForm 事件中使用 Me.MainForm = Global.MyProject.Form1 之类的东西,则两个项目组中都需要 Form1,否则将不会编译缺少的一个。这将引发异常,例如“Form1”不是“configurableBuild”的成员
  • @OpenMinded 谢谢。这似乎真的是我想要的。我会试试的
【解决方案2】:

您可以将它们创建为不同的项目,但为每个项目添加相同的代码文件:

  • 将现有文件添加到演示项目
  • 从完整版中选择表单文件
  • 添加为链接

【讨论】:

  • 添加截图,因为这个功能隐藏在VS深处。
【解决方案3】:

编译器标志。将表单移动到单独的程序集中并替换它们。将所有表单放入同一个程序并让工厂选择正确的表单(同样基于许可证密钥或编译器标志的 listley)。

【讨论】:

  • 这些是个人建议,对吗?将其显示在项目符号列表中会更好吗?
  • @TomTom 你能再解释一下吗?
【解决方案4】:

如何使用 CDKEY 00 完整版 11 进行类似此演示,然后加密该密钥 md5 哈希,然后将其写入注册表项,当程序运行时,它首先读取该密钥示例 if(cdkey==11){ //完整版 } else { //demo }。

【讨论】:

    猜你喜欢
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    相关资源
    最近更新 更多