我正在尝试使用自定义提供商扩展Microsoft Web部署工具和MSDEPLOY,因为我想作为该过程的一部分在目标部署计算机上运行自定义任务。在自定义提供商开发外,一般文档非常好,但是执行任何扩展的文档似乎对糟糕率不存在。

我已经研究了几天,发现一些零碎的东西使我在没有任何真实文档的情况下就可以走得很远。我几乎在整个过程中都砍掉了自己的方式,但是现在我有一个最后的问题:MSDeploy不会识别我的自定义提供商。

我创建了两个类,该类别扩展了microsoft.web.deployment.deploymentproviderfactory(它在我的自定义提供商“ Archimedes”的名称中既有名称和友好的名称属性);另一个扩展了Microsoft.web.deployment.deploymentObjectProvider,它还具有Overriden名称属性“ Archimedes”。我通过遵循您可以在线找到自定义batchprovider示例来做到这一点。看起来像这样:

ArchimedesProviderFactory(扩展了DeploymentProviderFactory,并将部署ProviderFactory属性分配给了类):

public override string FriendlyName
{
    get { return "archimedes"; }
}

public override string Name
{
    get { return "archimedes"; }
}

ArchimedesProvider类扩展了DeploymentObjectProvider,并具有:

public override string Name
{
    get { return "archimedes"; }
}

在我的sourcemanifest.xml文件中,我添加了一个条目:

<archimedes path="..." />

我将包含这些类中包含这些类的汇编文件放置在%program Files% iis Microsoft Web部署可扩展性中,因为我也是由在线找到的材料指导的。

有趣的是,在Visual Studio 2010中构建包装期间,我的提供商正在从该目录中调用代码 - 因此,VS肯定会连接到我的汇编以某种方式连接(例如,我可以抛出异常,然后看到它们是在建造包裹的过程中被抛弃的。

但是,在从生成的.cmd文件中实际的测试部署过程中,我会发现一个错误,即提供者“ Archimedes”的工厂无法找到。也打字:

MSDeply -verb:dump -source:archimedes -debug

返回以下内容:

    Microsoft.Web.Deployment.DeploymentException: Unknown factory 'archimedes'.
   at Microsoft.Web.Deployment.DeploymentProviderSettingCollection..ctor(String factoryName)
   at Microsoft.Web.Deployment.DeploymentProviderOptions..ctor(String factoryName)
   at MSDeploy.MSDeploy.GetObjectParameters(Dictionary`2 parameters, Boolean isDestination, DeploymentBaseOptions& retbaseOptions, DeploymentProviderOptions& re
tproviderOptions)
   at MSDeploy.MSDeploy.ExecuteWorker()
   at MSDeploy.MSDeploy.Execute()
   at MSDeploy.MSDeploy.Main(String[] unusedArgs)
Error count: 1.

因此,除了事实外,似乎没有一个连贯的,核心的文档来源来定制提供商开发(有人知道一个地方,请告诉您是否找到了一个地方),我的主要问题是,出于某种原因,Visual Studio会看到和从我输入扩展性文件夹的汇编文件中调用我的提供商工厂,但实际的msdeploy/webDeploy看不到它。有人有任何想法吗?

万分感谢...

有帮助吗?

解决方案

好的,这是一个简单的错误,尽管一个不太明显的错误,因为包装构建部分可以访问代码,并从我的提供商组件中调用了代码。问题在于,由于Web应用程序中的几乎所有内容都针对4.0框架,因此我与自定义提供商代码添加的类库项目也是如此。我必须将目标框架设置为2.0,所有这些都开始工作。错误报告没有过于明显。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top