我正在开发一个项目,我将作为开源发布,但它必须包含一些值(BASS音频库免费软件regkey,更新服务器的url等),我只想编译成在为那些只想使用应用程序并且不关心源代码的人编译二进制版本时编译源代码。基本上,我想阻止使用源代码的人使用我的reg密钥(他们可以免费获得)或者让他们的版本联系我的更新服务器,因为版本会有所不同。
那么,什么是最好的方法来制作将被编译到代码中并在文件存在时使用的东西,但我可以从源代码控制中排除它只会使用默认值或禁用某些部分的编译,如果该文件存在不存在?
答案 0 :(得分:1)
我将如何做到这一点:
答案 1 :(得分:1)
您可以编辑项目文件,以根据构建类型有条件地包含一个文件或另一个文件。我手边没有样品,但这样做不应该太难。 Something 喜欢:
<ItemGroup Condition=" '$(Configuration)' == 'Debug' ">
<Compile Include="PublicFile.cs" />
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)' == 'ApplicationRelease' ">
<Compile Include="PrivateFile.cs" />
</ItemGroup>
我会尝试将“库”部分与“应用程序”部分分开构建,并始终使库部分在其配置中采用相关参数。这样任何 想要使用该库的人都应该能够使用“发布”DLL - 它只是需要额外文件才能运行的应用程序。
编辑:如果你想在配置文件中包含这些值,那么完全有可能同样的方法适用于app.config
。