在发布模式下构建时,有没有办法自动使用单独的app.config?
换句话说,我想用一个app.config进行测试,然后用另一个进行测试.
目前,我保留了一个名为app.config.production的单独副本,并在构建发布后手动覆盖bin\Release\Application.exe.config.
我前几天安装了Visual Studio 2010 SP1,现在当我尝试"发布"我的应用程序时,我的所有项目都出现了这个错误.
The target "_CopyBinDeployableAssemblies" does not exist in the project.
Run Code Online (Sandbox Code Playgroud)
我不知道这里有什么问题,而且我对所有强大的谷歌一无所知,这让我有点紧张.
任何人都可以指出我在这里正确的方向或可能有其他人有同样的问题吗?因为它发生在我的所有项目中,所以我对这个问题感到惊讶.
这些站点是ASP.NET Web应用程序,其中一些是混合Web表单/ MVC,但其中一个只是Webforms.1网站超级简单,几乎没有参考,我仍然得到错误.
deployment visual-studio-2010 visual-studio visual-studio-2010-sp1
我正在使用此问题的解决方案,以便App.config在Winforms项目中应用配置更改.我还有一个项目的安装程序项目,它创建一个可安装的*.msi文件.问题是,安装程序中捆绑的配置文件是原始的,未转换的配置文件.因此,即使构建的winforms项目的配置文件已应用了所有正确的转换,我们也无法在生产安装程序中获取生产连接字符串.
有没有办法强制安装程序项目使用项目构建的输出?
在 .NET Framework WinForms 项目中,项目中有一个 App.config 文件,该文件是一个 XML 文件,其中包含一个 configSection,该文件将引用 System.Configuration 中的一个类,以及一个用于 userSettings 本身的部分,如下所示:
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561944e089">
<section name="MyAppName.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561944e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<MyAppName.Properties.Settings>
<setting name="Test" serializeAs="String">
<value>Some Value</value>
</setting>
</MyAppName.Properties.Settings>
</userSettings>
Run Code Online (Sandbox Code Playgroud)
这在构建文件夹中创建了一个文件,其中应用程序名称加上 .exe.config,如 MyAppName.exe.config。
但是当我使用 .NET 创建一个新的 WinForms 项目时:
解决方案中没有 App.config。我可以使用项目属性编辑设置:
我可以访问这些值,并使用相同的 Properties 对象和方法更新它们:
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
textBox1.Text = Properties.Settings.Default.Test;
}
private void button1_Click(object sender, EventArgs …Run Code Online (Sandbox Code Playgroud) 基本上,上面的问题.为不同环境的web.config文件提供的新配置转换非常好.
但是,我希望app.configs具有相同的功能,这些功能因测试环境而异.
有谁知道如何使这项工作?
提前致谢.
按照本回答中的步骤操作后,尝试通过mono(使用msbuild)构建项目时,出现以下错误:
(AfterCompile target) - > project.csproj(469,5):错误MSB4062:无法从程序集中加载"TransformXml"任务/usr/lib/mono/xbuild/Microsoft/VisualStudio/v15.0/Web/Microsoft .Web.Publishing.Tasks.dll.确认声明是否正确,程序集及其所有依赖项是否可用,以及该任务是否包含实现Microsoft.Build.Framework.ITask的公共类.
看起来似乎Microsoft.Web.Publishing.Tasks.dll不可用.
许多CI新手(持续集成)在他们的CI服务器上安装VS(Visual Studio)"因为需要编译代码".MSTest是这里提到的常见参考.
为什么我不应该在我的CI服务器上安装VS(或者一般来说,任何不是开箱即用的软件)?
(这个问题显然没有被问过,所以我加入它作为参考.如果它已经存在,抱歉,我错过了,请合并.如果在一段时间内没有提供这个问题的答案,我可以自己添加一个)
我有一个 .Net Framework 4.6.1 项目,它创建了一个 Windows 服务。我们希望通过 Azure Devops 管道构建和部署它。我们已经成功地为我们所有的 .Net Core web 服务创建了管道(使用 ASPNETCORE_ENVIRONMENT 变量和一组 appsettings.{ENV}.json 文件)但是 Windows 服务在提供不同的不同环境的配置。
我有适用于 App.config XML 文件的 XDT 转换。我可以右键单击 Visual Studio 中的文件和“预览转换”,它工作正常。
不清楚的是我如何将其转换为管道配置。Build 任务似乎能够运行转换,但我不确定我们如何为不同的 Deploy 阶段进行不同的转换。相反,所有环境最终都会将任何转换应用于作为构建步骤的一部分选择的构建配置。
我已经关注了许多博客文章 - 包括这篇文章,它声称您可以有多个构建配置,但我似乎没有设置。
我错过了什么?
我实际上只是通过添加Microsoft.AspNet.WebApi.OwinSelfHost nuget包创建了一个NServiceBus自托管终结点并引导了自托管的Web api 2。一切正常并且运行良好,我可以点击我添加的控制器端点,但是该软件包没有添加诸如web.config之类的常规项。
我想有正常web.config可用的地方,我还可以添加不同的生成配置(如转换文件web.debug.config,web.release.config等等)。
如何将其添加到我的项目中?
我尝试仅添加文件,但ConfigurationManager不读取它。
我有一个在Intranet上发布的应用程序.当我调试我的应用程序时,它运行顺利.但是当我发布我的应用程序和我的visual studio作为调试器时,从实体中检索变为null.
对象引用未设置为对象的实例.
从这一行(使用发布版本的app调试器):
user_mstr vwUser = ctx.user_mstr.FirstOrDefault(x => x.user_cd == strUserCD);
Run Code Online (Sandbox Code Playgroud)
我正在使用MySQL数据库与实体框架.请注意,我正在使用相同的PC但不同的版本,已发布而不是.
更新:
这null仅在发布时返回,而不是在调试器上运行时返回.调试器上一切正常.
这是连接字符串:
connectionString="metadata=res://*/DataAccess.entityName.csdl|res://*/DataAccess.entityName.ssdl|res://*/DataAccess.entityName.msl;provider=MySql.Data.MySqlClient;provider connection string="server=servername;user id=username;password=password;persistsecurityinfo=True;Convert Zero Datetime=True;database=default_db""
Run Code Online (Sandbox Code Playgroud)
我认为值得一提的是我正在研究WPF.
我正在开发一些可以在两种环境中运行的应用程序:开发或生产.我希望每个都有不同的日志记录基础结构.
环境在运行时传递给我的.exe.如何通过代码启用/禁用相应的appender?在下面的配置中是否还有调整内容?
我在这个app.config文件中有其他内容用于应用程序设置,为每个键提供一个"prod"值和一个"dev"值,基于此,所以我不想要多个配置文件.
<log4net>
<root>
<level value="debug" />
<appender-ref ref="Dev" />
<appender-ref ref="Prod" />
</root>
<appender name="Dev" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="blabla 1" />
<layout type="log4net.Layout.PatternLayout">
<Header value="[Application Start] " />
<Footer value="[Application Exit] " />
<ConversionPattern value="%date (%property{ActiveStatus}) %-5level [%2thread] %-20.20logger{1} %message%newline" />
</layout>
</appender>
<appender name="Prod" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="blabla 2" />
<layout type="log4net.Layout.PatternLayout">
<Header value="[Application Start] " />
<Footer value="[Application Exit] " />
<ConversionPattern value="%date (%property{ActiveStatus}) %-5level [%2thread] %-20.20logger{1} %message%newline" />
</layout>
</appender>
</log4net>
Run Code Online (Sandbox Code Playgroud) c# ×5
app-config ×2
winforms ×2
.net ×1
.net-5 ×1
azure-devops ×1
ci-server ×1
deployment ×1
installer ×1
log4net ×1
mono ×1
msbuild ×1
mysql ×1
nservicebus ×1
owin ×1
web-config ×1
wpf ×1