2017-05-15 38 views
0

我的Visual Studio ASP.NET C#解决方案/项目的设置是这样的:VS 2015/C# - 包括(但不进行编译)在项目源文件建立

> MySolution 
    > MyProject 
     * MyFolder 
     * MyPages 
     * MyScripts 
     ... 
     MyConfig.cs <-- This file 
    ... 
--- End MyProject/MySolution 

我有这个项目的编译,但在这个过程中,当我需要它时,它也会编译MyConfig.cs文件。

这个文件包含了各种形式的几个属性,在整个应用程序中使用,我想它是留在源代码的形式,以便它可以很容易地编辑为纯文本的服务器上,如果需要的话无需重建/重新部署解决方案/项目。

我试着将文件的属性,特别是“Build Action”&“Copy to Output Directory”设置为“Content”和“Always”,“Compile”和“Always”,“AdditionalFiles”和“总是”......分别。一切都没有成功。我不确定为了实现这种行为需要进行更改。

任何帮助或帮助表示赞赏。谢谢

+1

所以我会问一个明显的问题:为什么使用源代码来管理配置设置而不是使用内置的配置子系统?源代码似乎很容易出现拼写错误 - 想想在正常开发过程中每天打破构建的次数......借助IDE ......具有错误突出显示。 –

+2

如果您在服务器上包含源代码,那么您如何期望成为应用程序的一部分?用户进行更改后,他们将在服务器*上编译它*?这似乎很荒谬。如果它是一个ASP.NET项目,请像使用其他应用程序一样使用.config文件或创建settings.json文件。当它不属于C#时,保持它是愚蠢的。 – mason

+0

如果您打算做这样的事情,那么您需要查看托管扩展框架http://mef.codeplex.com/或CSharpCodeProvider类https://msdn.microsoft.com/en-us/library/ microsoft.csharp.csharpcodeprovider.aspx。此外,如何从构建排除文件:https://msdn.microsoft.com/en-us/library/ms171455.aspx –

回答

0

更改构建类型为内容或没有应该是足够的,但智能并不总是捕捉这种变化。在重建之前,您需要先关闭文件。之后您可以重新打开它,不应该在编辑器中编译或错误检查。

+0

@SC我试过这个,但是在我引用MyConfig.cs中的属性的情况下,项目不会编译说类/属性不存在(即缺少一个程序集引用)。使用MyConfig.cs的文件需要也被设置为“内容”构建行为呢? – B1313

+0

是的,如果你不想让它们编译。否则你有一个不一致的目标。如果不是这样,你需要考虑一些已经发布的评论,说明你为什么要做你正在做的事情,以及更好的方法。 –

+0

我不确定您是否知道,但是您可以创建由模型支持的自定义配置部分,以允许配置文件匹配您的复杂配置属性类型。你仍然可以在服务器上编辑它,而无需重新编译或重新打包(假设这是一个你正在讨论的app.config,它会变成YourApplication.exe.config)。 –

相关问题