0

我们在解决方案中使用的一个参考在我们部署代码时会导致问题。

参考是 System.Management.Automation。当我们发布解决方案时,我们使用 EncryptionWizard 3.4.13(政府版)存档文件,然后将存档文件刻录到 DVD 并将其带到单独的位置并在生产服务器上展开。归档和扩展功能对文件进行加密和解密。

在展开过程中,当它到达 System.Management.Automation.dll 时,它会停止解密。

EncryptionWizard 确实无能为力,但我们应该能够进行更改以解决该问题,因此我们希望排除正在发布的 System.Management.Automation。

我们希望使用 Visual Studio 2017 中的发布功能而不是使用 MSBuild 来完成此操作。

我在网上找到了一些对我不起作用的代码。在我的项目的 csprog 文件中,我输入了以下代码:

<None Update="System.Management.Automation" CopyToPublishDirectory = "Never"/>

然后我尝试了这个:

<None Update="bin\System.Management.Automation.dll"> <CopyToPublishDirectory>Never</CopyToPublishDirectory> </None>

当我查看 bin 文件夹时,System.Management.Automation.dll 总是在那里。

如果我将 System.Management.Automation 引用的 Copy Local 属性设置为 false,则我无法在 Visual Studio 中启动我的 Web 应用程序而不会出现错误,但是我的部署问题已解决。

我希望能够将 Copy Local 设置为 true,但从已发布的文件中排除 System.Management.Automation.dll 文件。

4

1 回答 1

0

解决方案是在您的项目文件夹中创建一个名为 [Your Project Name].wpp.targets 的 xml 文件,并添加如下代码:

<?xml version="1.0" encoding="utf-8" ?>
<Project ToolsVersion="4.0"
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup> 
    <ExcludeFromPackageFiles Include="[dll path and name]">
      <FromTarget>[Any text]</FromTarget>
    </ExcludeFromPackageFiles>
  </ItemGroup>
</Project>

由于某种原因,必须手动输入代码,而不是复制和粘贴。至少在我的情况下,因为如果我出于某种原因复制和粘贴 Visual Studio 将无法识别它。

并非所有解决方案配置都有效。我有一个叫做“Live”,另一个叫做“Test”。它在“调试”中不起作用,我没有尝试“发布”。

于 2019-07-19T14:24:51.137 回答