小编Law*_*ard的帖子

MSBuild:确保在任何其他构建步骤之前运行目标

我正在尝试更新AssemblyInfo.cs文件,以反映在任何其他构建步骤发生之前项目的下一个发布版本.

在我的项目文件中,我在结束前添加:

<Import Project="$(ProjectDir)Properties\PublishVersion.proj" />
Run Code Online (Sandbox Code Playgroud)

PublishVersion.proj看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
<Target Name="BeforeBuild">
    <FormatVersion Version="$(ApplicationVersion)" Revision="$(ApplicationRevision)">
        <Output TaskParameter="OutputVersion" PropertyName="SetVersion" />
    </FormatVersion>
    <FileUpdate Files="$(ProjectDir)Properties\AssemblyInfo.cs"
       Regex="\d+\.\d+\.\d+\.\d+"
       ReplacementText="$(SetVersion)" />
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

现在它确实在构建完成之前执行,但绝对不会在它启动之前执行,因为当我查看生成的exe时,它有一个在AssemblyInfo.cs中的文件版本在构建开始之前但.application文件和清单文件有各种引用新版本.

生成清单文件(构建开始前为1.0.0.0,构建后为1.0.0.4):

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly ...>
  <asmv1:assemblyIdentity name="BHTechSupport.exe" version="1.0.0.4" ... />
  ...
  <entryPoint>
    <assemblyIdentity name="BHTechSupport" version="1.0.0.0" ... />
    ...
  </entryPoint>
  ...
  <dependency>
    <dependentAssembly ... codebase="BHTechSupport.exe" ...>
      <assemblyIdentity name="BHTechSupport" version="1.0.0.0" ... />
      ...
    </dependentAssembly>
  </dependency>
  ...
</asmv1:assembly>
Run Code Online (Sandbox Code Playgroud)

那么如何确保我的目标在其他一切之前被执行?

对PublishVersion.proj进行更改有时似乎没有生效,我需要清理解决方案并在影响之前重新启动visual studio.

c# msbuild

10
推荐指数
2
解决办法
7811
查看次数

如何打开服务属性对话框

我想在我的应用程序中添加一个按钮(服务的前端),它将为我的服务打开服务属性对话框(如服务mmc snapin).

打开文件属性有很多例子,但这不是我想要的.我不知道从哪里开始.

c# service dialog shellexecute windows-shell

6
推荐指数
2
解决办法
1257
查看次数

是否有可能知道通过API调用在IOCP上排队了多少未处理的已完成操作?

我正在使用C#套接字(使用IOCP进行回调).我想要一种方法来确定我的处理逻辑落后的天气.是否有API调用可以为我提供未被回调处理的已完成操作的大小?

我已经考虑过使用类似心跳操作的东西,我会发布到队列中,并确定我是否已经过了回调的时间,但我希望在可能的情况下更直接的路由(另外我没有轻松访问)到.Net内部控制的IOCP句柄).

.net c# sockets iocp

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

标签 统计

c# ×3

.net ×1

dialog ×1

iocp ×1

msbuild ×1

service ×1

shellexecute ×1

sockets ×1

windows-shell ×1