Jon*_*ola 4 .net c# c++ tfs visual-studio-2013
我有一个C#Web服务项目.我创建了一个客户端,用于创建和管理与服务的连接.我们有一个用C++编写的旧PC产品,他们需要有一个接口来调用服务.我在客户端为它们创建了一些调用,并使COM可见的新对象可以传递数据.然后,我检查项目设置中的"注册COM互操作"框.这一切似乎都在本地构建和工作(我作为管理员运行visual studio).但是当我在我的TFS服务器上签入时,构建失败说明:无法注册程序集"MyClient.dll" - 访问被拒绝.请确保您以管理员身份运行该应用程序.访问注册表项"HKEY_CLASSES_ROOT\MyClient.MyClass"被拒绝.有没有办法在构建机器上提升我的令牌或其他一些方法来解决这个问题?
我找到了一种工作方式!如果查看项目中的XML,您会看到如下所示的节点:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<RegisterForComInterop>true</RegisterForComInterop>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
这里的问题当然是告诉项目注册com interop的行.我还看到了发布配置的类似定义.我可以通过删除行来解决问题,或者通过UI取消选中该框,但我在项目中有其他人需要获取代码,如果源代码管理中的项目版本适用于他们会更好.答案是取消选中发布定义上的寄存器互操作框,但将其保留在调试定义中,然后将构建TFS定义更改为仅构建用于发布.这样,我的同事可以拥有com对象,构建服务器也不会抱怨.
| 归档时间: |
|
| 查看次数: |
6344 次 |
| 最近记录: |