小编Per*_*Per的帖子

使用MSDeploy将控制台应用程序部署到DMZ服务器

我正在尝试使用带有MSBuild和Team Foundation Server的autodeploy将控制台应用程序部署到DMZ服务器上的文件夹.

我已经在同一台服务器上部署了多个站点,效果很好.我尝试了多种方法,但没有部署文件.

首先,我尝试以与我的网站相同的方式部署控制台应用程序,即:

<MSBuild
    Projects="$(SolutionRoot)\MySolution.sln"
    Properties="AllowUntrustedCertificate=True;AuthType=Basic;
    Configuration=DEBUG;CreatePackageOnPublish=True;                                
    DeployIisAppPath=Default Website/dummy.dev.myapp;
    DeployOnBuild=True;DeployTarget=MsDeployPublish;
    MSDeployPublishMethod=WMSvc;
    MsDeployServiceUrl=https://xxx.xxx.xxx.xxx:8172/MsDeploy.axd;
    UserName=userid;Password=password;UseMsdeployExe=True"
/>
Run Code Online (Sandbox Code Playgroud)

没有成功.

编辑:没有返回错误消息.一切似乎进展顺利.

然后,我还尝试按如下方式部署控制台应用程序:

<Exec Command="&quot;C:\Program Files\IIS\Microsoft Web Deploy V2\MSDeploy.exe&quot; 
                -verb:sync 
                -source:contentpath=&quot;$(OutDir)\MyApp.Precompiled&quot; 
                -dest:contentpath=&quot;D:\dev.myapp&quot;,computername=xxx.xxx.xxx.xxx,username=userid,password=password" 
                ContinueOnError="false" />
Run Code Online (Sandbox Code Playgroud)

我实际上也试过用computername作为https://xxx.xxx.xxx.xxx:8172/MsDeploy.axd.

编辑:以下是我得到的.EXEC:FileOrFolderNotFound EXEC:无法创建"contentPath"类型的对象和路径"E:\ Builds\1 ...\dev.myapp".EXEC:路径'\?\ E:\ Builds\1 ...\dev.myapp'无效.EXEC:1.E:\ Builds\1 ...\BuildType\Targets\Deploy.targets(142):命令""C:\ Program Files\IIS\Microsoft Web Deploy V2\MSDeploy.exe"-verb:sync -source:contentpath ="E:\ Builds\1 ...\dev.myapp"-dest:contentpath ="D:\ dev.myapp",computername = https://xxx.xxx.xxx.xxx:8172/MsDeploy.axd,username = userid,password = password"退出,代码为-1.我意识到我没有读过所有的错误,我真的需要一个UNC路径吗?

有谁知道如何做到这一点?

msbuild tfs tfsbuild msdeploy tfs2010

6
推荐指数
1
解决办法
5125
查看次数

将解决方案升级到.NET framework 4.5后,每日部署停止工作

我们成功地使用TFS2010中的msdeploy每天更新我们的开发网站.

这工作正常,直到我们升级到VS2012,我们的应用程序从.NET Framework 4.0升级到4.5,ASP.NET MVC从3.0升级到4.0.看起来一切都很好并且部署了程序集但实际上没有部署任何内容.

我现在已经研究了两天了,无法弄清楚为什么会发生这种情况,现在我的想法已经不多了.

以下是我的构建脚本的一部分,它在升级之前的工作方式.

<MSBuild
                Projects="$(SolutionRoot)\My.Web\My.Web.csproj"
                Properties="MvcBuildViews=False;AllowUntrustedCertificate=True;AuthType=Basic;Configuration=Dev;CreatePackageOnPublish=True;DeployIisAppPath=dev.myweb;DeployOnBuild=True;DeployTarget=MsDeployPublish;MSDeployPublishMethod=WMSvc;MsDeployServiceUrl=https://10.xxx.xxx.xxx:8172/MsDeploy.axd;UserName=UserName;Password=Password;UseMsdeployExe=True"
                ContinueOnError="False"
                />
Run Code Online (Sandbox Code Playgroud)

启动升级并且我的问题发现我们使用的是Web Deploy 2.0,但现在我们已升级到Web Deploy 3.0.我也确保我们正在建设ToolsVersion="4.0".

更新 -

msbuild.exe/p:AllowUntrustedCertificate = True/p:AuthType = Basic/p:Configuration = Dev/p:CreatePackageOnPublish = True /p:DeployIisAppPath=dev.myweb/p:DeployOnBuild = True/p:DeployTarget = MsDeployPublish/p: MSDeployPublishMethod = WMSvc /p:MsDeployServiceUrl=https://10.xxx.xxx.xxx:8172/MsDeploy.axd/p:UserName = UserName/p:Password = Password/p:UseMsdeployExe = True E:\ Builds\1 \无论\ Daily_Build的\ Sources\My.Web\My.Web.csproj

现在我也尝试从我们的TFS运行上面的msbuild命令,没有任何响应让我完全失望.在TFS的事件日志中没有任何内容,日志文件中没有任何内容,无论冗长...有什么想法吗?

它确实可以使用msdeploy directy,如下所示;

<Exec Command="&quot;C:\Program Files\IIS\Microsoft Web Deploy V3\MSDeploy.exe&quot; -verb:sync -source:contentPath=&quot;E:\Builds\1\WhatEver\Daily_Build\Sources\My.Web\My.Web.csproj&quot; -dest:contentPath=&quot;E:\dev.my.web&quot;,computername=https://10.xxx.xxx.xxx:8172/MsDeploy.axd,username=UserName,password=Password,authtype=Basic -allowUntrusted=True"
              ContinueOnError="false" />
Run Code Online (Sandbox Code Playgroud)

-

更新2 - 似乎Microsoft添加了对可发布项目的类型项目和我们的Web应用程序不是的检查,因为输出类型是类库.这对v4.0有效,但显然不适用于v4.5.

任何人都知道该怎么做让它再次起作用?我需要更改项目类型吗?预先创建发布包,然后部署它?或者是什么?

-

有其他人遇到过同样的问题吗?你找到了分享的解决方案吗?

MSBuild版本可能存在问题吗?

msbuild msdeploy tfs2010 webdeploy .net-4.5

6
推荐指数
1
解决办法
4434
查看次数

在实体框架4.1中将discriminator列更改为int

这是我的情况,非常简化.

我的课程;

public class ClassBase
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
}

public class ClassMiddle1 : ClassBase
{

}

public class ClassMiddle2 : ClassBase
{
    public Guid Token { get; set; }
}

public class ClassA : ClassMiddle1
{
    public string UserId { get; set; }
    public string Username { get; set; }
}

public class ClassB : ClassMiddle2
{
    public string Username { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

而我的OnModelCreating;

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<ClassBase>() …
Run Code Online (Sandbox Code Playgroud)

c# code-first ef-code-first entity-framework-4.1

5
推荐指数
1
解决办法
2880
查看次数

是否可以创建条件属性作为DisplayIf?

我想创建一个与我的viewmodel一起使用的属性.我想根据第三个值显示不同的文本字符串.

我想做这样的事......

[DisplayIf("IsPropertyValid", true, Name="value 1")]
[DisplayIf("IsPropertyValid", false, Name="value 2")]
public string MyProperty { get; set; }

public bool IsPropertyValid { get; set; }
Run Code Online (Sandbox Code Playgroud)

根据我的值IsPropertyValid是否为真,我想显示一个或另一个.IE浏览器.当属性IspPropertyValid等于true时,"value 1"将是displaytext,如果不是,则它将是"value 2".

ASPNET.MVC属性可以实现吗?或者甚至更好......像......一样的组合......

[DisplayIf("IsPropertyValid", new {"value 1", "value 2"})].
public string MyProperty { get; set; }

public bool IsPropertyValid { get; set; }
Run Code Online (Sandbox Code Playgroud)

然后该属性检查IsPropertyValid的值,并确保显示的值为"value 1"或"value 2".

c# asp.net-mvc-4

5
推荐指数
1
解决办法
949
查看次数

如何避免在不使用忽略属性的mstest中运行测试?

与外部服务集成时,我们有几个单元测试。这些服务可能不稳定,并且超出了我们的控制范围,因此有必要将其从我们的日常构建中删除。

由于通常的单元测试是作为门控检入的一部分运行的,因此我们已经在单独的组件中进行了集成测试。

虽然,我们仍希望在日常构建中运行许多集成测试,因此我们无法从日常构建中完全删除程序集。

我试图删除[TestClass]属性,并且在VS2012中可以正常工作。但是,当我们签入并使用TFS(2010)进行构建和运行测试时,出现以下错误。

[错误消息] = UTA004:在Test.TestMethod上非法使用属性。只能在标有TestClass属性的类内部定义TestMethodAttribute。

任何人都知道如何完全删除测试运行吗?[忽略]不会执行,那么我的测试运行将被关于被忽略的测试的警告所困扰。

msbuild tfs mstest visual-studio-2012

4
推荐指数
1
解决办法
2182
查看次数

在我的应用服务中使用托管标识时,Azure 服务总线的连接字符串的正确格式是什么?

我在 Azure 中将此应用程序服务作为 Web 作业运行。该应用程序是使用 NServiceBus 构建的前 Windows 服务,我一直在重新配置它以在 Azure 中工作。

该应用程序正在使用 AzureServiceBusTransport,并且我的 Azure 服务总线设置了队列。

我得到它的工作......当我使用在我的连接字符串中配置的共享访问密钥时,如下所示;

"ConnectionString": "Endpoint=sb://MYNAMESPACE.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=***"
Run Code Online (Sandbox Code Playgroud)

为了使其与托管身份一起使用,我在 NServiceBus EndpointConfiguration 中重新配置了:

transport.CustomTokenCredential(new DefaultAzureCredential());
Run Code Online (Sandbox Code Playgroud)

我还将连接字符串更改为以下内容;

"ConnectionString": "Endpoint=sb://MYNAMESPACE.servicebus.windows.net/;Authentication=ManagedIdentity"
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用托管身份时,我收到以下异常;

ArgumentException:值“Endpoint=sb://MYNAMESPACE.servicebus.windows.net/;Authentication=ManagedIdentity”不是格式良好的服务总线完全限定命名空间。

当我使用共享访问密钥时,MYNAMESPACE 显然是正确的,但当我使用托管身份时却不正确?

我们确实有一个可以使用托管身份的 Azure 功能,并且在这种情况下使用:

"ConnectionString": "Endpoint=sb://MYNAMESPACE.servicebus.windows.net/;Authentication=ManagedIdentity"
Run Code Online (Sandbox Code Playgroud)

nservicebus azure azureservicebus azure-appservice

4
推荐指数
1
解决办法
6602
查看次数